![]() |
|
||||||||||
|
|||||
|
"simple"
|
Здрасте!
В процессе работе с флэшом возникла надобность решить одну простенькую геометрическую задачу... Даны две точки и нужно определить принадлежность третьей (точки) прямой, на которой лежат первые две... Вроде бы всё просто... Пишем: Y1 = k*X1 + b; - через 1-ую точку Y2 = k*X2 + b; - через 2-ую из этой системы узнаём k и b: k = ( Y1 - Y2 ) / ( X1 - X2 ); b = Y1 - k*X1; Проблема заключается в том, что при X1 = X2 в знаменателе k получается 0 и, соответственно возвращается - Infinity... А теперь вопрос: ПОЧЕМУ ТАК ПОЛУЧАЕТСЯ??? Чувствую, что-то упустил, но, блин, не пойму ЧТО??? Помогите, плз!.. ![]() |
|
|||||
|
Регистрация: Oct 2001
Адрес: USA, Morton Grove, IL
Сообщений: 123
|
..., но не до конца. Я исполтьзовал тако
|
|
|||||
|
Регистрация: Oct 2001
Адрес: USA, Morton Grove, IL
Сообщений: 123
|
..., но не до конца. Я использовал почти твой алгоритм, но с проверкой равенства иксов:
iRes=0; if(x2!=x1) { if(yc-y1==(y2-y1)/(x2-x1)*(xc-x1)) { if((xc-x1)*(xc-x2)<=0) iRes=1; } } else { if(xc==x1) { if((yc-y1)*(yc-y2)<=0) iRes=1; } } , можешь проверить в прикреплённом мувике (извини, немножко увлёкся ) |
|
|||||
|
"simple"
|
Спасибо за ответ...
Теперь попытаемся всё осмыслить... Насколько я понял, первое сравнение yc-y1==(y2-y1)/(x2-x1)*(xc-x1) ты вывел из равенств k... Так? Тока тут возникает вопрос: для чего было переносить (xc-x1) в другую сторону (это не упрёк - просто интересно - какая цель) А вот сравнение (xc-x1)*(xc-x2)<=0) и такое же с игриками не очень понятно... Объясни плз... Спасибо ![]() |
|
|||||
|
Регистрация: Oct 2001
Адрес: USA, Morton Grove, IL
Сообщений: 123
|
Первое сравнение - это из равенств k и b, т.е., если координаты точки являются решением уравнения прямой, то точка принадлежит ей.
(xc-x1) я перенёс, чтобы не дай Бог не поделить на ноль. А сравнение (xc-x1)*(xc-x2)<=0 и такое же с игреками для того чтобы проверить, принадлежит ли точка отрезку (не прямой, а именно отрезку!); произведение этих сомножителей отрицательное или ноль тогда и только тогда, когда x1<=xc<=x2 или x2<=xc<=x1. С уважением, Сергей. |
|
|||||
|
"simple"
|
ОК - понял...
Спасибо ![]() |
![]() |
Часовой пояс GMT +4, время: 07:54. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|