![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 29.02.2008
Сообщений: 5
|
![]()
Подскажите пожалуйста, как отследить пересечение прямой и круга?
Есть линия, и точки центра круга(p1,p2), как это сделать? ![]() procedure Tenemy1.draw(laser1,laser2:boolean; p1,p2:integer); Код:
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Пройдись по всем точкам линии и определи попадает ли она в окружность.
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
![]()
Можно математически найти точки пересечения прямой и окружности:
(x-x0)^2+(y-y0)^2=R^2 - окружность, y=kx+b - прямая. Решаем систему, получаем квадратное уравнение (2 корня - 2 координаты). Линия между этими координатами и проходит внутри круга. Если система не имеет решений - линия и круг не пересекаются. Если корень один - линия касается круга. Последний раз редактировалось _Dmitry; 05.03.2008 в 16:55. |
![]() |
![]() |
![]() |
#4 |
Регистрация: 29.02.2008
Сообщений: 5
|
![]()
а как пройтись по линии? При каждом изменении переменных х и у нужно пересчитывать коэффицент к и b ? И сравнивать квадраты этих координат с квадратом радиуса?
![]() |
![]() |
![]() |
![]() |
#5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Один раз высчитай к и b а потом будеш получать Y
И сравнивай попадения точки в "радиус"
I'm learning to live...
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 29.02.2008
Сообщений: 5
|
![]()
_Dmitry, пробывал, но как-то не получилось
![]() Stilet, у меня проблемы возникают с построение уравнения для прямой ![]() |
![]() |
![]() |
![]() |
#7 |
Регистрация: 29.02.2008
Сообщений: 5
|
![]()
ай, сорри глупанул сильно))
то нормально что b=0, ща попробую сделать, потом отпишусь ![]() |
![]() |
![]() |
![]() |
#8 |
Забанен
Форумчанин Подтвердите свой е-майл
Регистрация: 01.11.2006
Сообщений: 420
|
![]()
_Dmitry прав
все сводится к решению квадратного уравнения вида: a1*x^2 + b1*x + c1 = 0 где: a1 = 1+k^2 b1 = -2*x0 + 2*k*b - 2*k*y0 c1 = b^2 + x0^2 - 2*b*y0 + y0^2 - R^2
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
|
![]() |
![]() |
![]() |
#9 |
Регистрация: 29.02.2008
Сообщений: 5
|
![]()
Спасибо всем, получилось как сказал Stilet(перебором всех точек). Если есть у кого свободное время, покажите пжл как математически можно это было сделать..
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Анимация прямой | NecroSlider | Помощь студентам | 3 | 23.04.2007 13:31 |
Объединение, пересечение, слияние массивов | -=Domestos=- | Помощь студентам | 6 | 25.12.2006 21:06 |