:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте ::
Путь: Математика » Геометрия » Нахождение пересечения и объединения геометрических объектов » Пересечение: Прямая(или отрезок) и плоскость
  Пересечение: Прямая(или отрезок) и плоскость



Плоскость задана тремя точками, прямая( или отрезок) начальной и конечными точками.

Очевидно, эта задача, как и многие подобные ей, может быть решена путем составления системы. Хотелось бы предложить более геометричный метод, который гораздо удобней в большинстве случаев.

Будем обозначать A,B,C - точки плоскости, X,Y - точки прямой(концы отрезка), SP - скалярное произведение, VP - векторное произведение. O - искомое множество точек пересечения

N = VP ( B - A, C - A )
N = N / | N |  - нормаль к плоскости  // в принципе это можно и не делать
V = A - X
// расстояние до плоскости по нормали
d = SP ( N, V )  
W = Y - X
// приближение к плоскости по нормали при прохождении отрезка
e = SP ( N, W ) 

if( e!=0 )
  O = X + W * d/e;          // одна точка
else if( d==0)
  O =X + W * (anything)     // прямая принадлежит плоскости
else
  O = empty;                // прямая параллельна плоскости

Если хочешь быть уверен, что плоскость пересекает не только прямая, но и отрезок, можно проверить условие SP ( X - O, Y - O ) <=0