Плоскость задана тремя точками, прямая( или отрезок) начальной и конечными точками.
Очевидно, эта задача, как и многие подобные ей, может быть решена путем составления системы. Хотелось бы предложить более геометричный метод, который гораздо удобней в большинстве случаев.
Будем обозначать 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
8 8 8
| |