return RIGHT;
. if ( a.x * b.x < 0.0 || a.y * b.y < 0.0 ) return BEHIND;
if ( a.length () < b.length ()) return BEYOND;
if ( p == *this ) return ORIGIN;
if ( q == *this )
return DESTINATION;
return BETWEEN;
}
BEYOND
RIGHT
LEFT
BEHIND

Рис. 8.3

Компьютерная графика. Полигональные модели

8.3. Расстояние от точки до прямой Пусть заданы точка С(сх, су) и прямая АВ, где А(ак, ау), В(ЬХ, Ьу) и требуется н ти расстояние от этой точки до прямой. Найдем длину отрезка АВ:

1 = ^{ах-Ьх)2 +(ау-Ъу}

Опустим из точки С перпендикуляр на АВ. Точку Р пересечения этого перпен куляра с прямой можно представить параметрически Р = А + г(В-А), где

(ау-су]ау-Ьу)-(ах-сх\Ъх-ах)

Положение точки С на этом перпендикуляре будет задаваться параметром 5, ^ < 0 означает, что С находится слева от АВ, 5 > 0, что С - справа от АВ и 5 = О начает, что С лежит на АВ.

Для вычисления 5 воспользуемся следующей формулой:

(ау-су1ьх-ах)-{ах-сх\Ьу-ау)

5 _
і2

и тогда искомое расстояние РС = я1. ,

8.4. Нахождение пересечения двух отрезков Пусть А, В, С и £> - точки на плоскости. Тогда направленные отрезки АВ и задаются следующими параметрическими уравнениями: Р = А + г{В-Л\РеЛВ, е = с + ^-с),ееСА

Если отрезки АВ и Си пересекаются, то Л + г(Д-Л)=С + *(0-С).

Перепишем это векторное соотношение в координатном виде: ах + г{Ьх ~ах) = сх+ ^ -сх), а у + г(ру - а у )= су + Б^у - су )

Эта система линейных алгебраических уравнений при

{Ьх ~ах)^у ~су)* ^у ~ауКх- ~сх) имеет единственное решение:

8. Основные алгоритмы вычислительной геометрии

_ [ау -суIfx ~сх)~(ах ~сх\dy -су) (bx - ах ){^у - су J- (by - ау \dx - сх)

= (ау ~су)/>х ~)-iflx -сх jpy -ау)

(bx - ах if у - Су y{by~ay\dx~ сх)

Если оба получившихся значения /- и s принадлежат отрезку [0,1], то отрезки АВ и CD пересекаются и точка пересечения может быть найдена из параметрических уравнений. В случае, когда оба или одно из полученных значений не принадлежат отрезку [0,1], отрезки АВ и CD не пересекаются, но пересекаются соответствующие прямые.

Равенство фх - ax)(dv - cv) = (bY - av)(dx - cx) означает, что отрезки АВ и CD параллельны.


⇐ Предыдущая| |Следующая ⇒