Тема: Геометрия
Показать сообщение отдельно
Старый 08.10.2007, 20:47   #13
Serendipity
Знающий
 
Регистрация: 04.01.2007
Сообщений: 229
Написано 5 полезных сообщений
(для 3 пользователей)
Re: Геометрия

Значит так, если пересекается, то:
берешь вектор, перпендикулярный к своей прямой, строишь вдоль него на окружности две точки - это будет точка S и точка центрально-симметричная ей.
Почему: потомучто прямая А1А2 идентична с Х1Х2. Х - середина Х1Х2. ОХ1=ОХ2=радиусу окружности. => Треугольники ОХХ1 и ОХХ2 подобны по двум сторона и одной общей, вообще говоря они равны.Жто возможно только когда угол ОХХ# прямой.

Из двух точек, S - ближайшая к A1, A2. Можно сравнивать не по сумме квадратов, а по сумме модулей разностей координат между точками А1 - S и S - A2.
Почему:
Точка, ближайшая к Х1 и Х2 одновременно, и является точкой S - это очевидно.
Дальше алгебра: если квадрат разности для одной пары чисел больше, чем для другой, то и модуль разности для первой пары тоже больше, чем для второй. Значит можно не возводить в квадрат разночти координат а брать их модули при вычислении расстояния между точками... так как на интересует не величина расстояния, а соотношение расстояний (больше/меньше).

Алгоритм:
1) VectorA = A2-A1 = {Vx,Vy} - вычитаем координаты точек между собой соответстенно.
2) Radius = {Vy,Vx}
3) S1 = O+Radius; S2=O-Radius
4) L1=abs(X1x-S1x)+abs(X1y-S1y); L2=...аналогично.
5) L1>L2 => S=S2, иначе S=S1
(Offline)
 
Ответить с цитированием