Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
5.Определение точки пересечения двух отрезков
Данная операция одна из наиболее распространённых и часто встречается в процессе построения плоских проекций 3D сцен. Рассмотрим два отрезка АВ и СD.
Возможны варианты их расположения:1. Параллельны и не имеют общих точек.
2.Непараллельны и не имеют общих точек.
3и 4.Пересекаются в одной точке(рисунок к 4ому ниже)
5. Совпадают и имеют много общих точек ---------------------- (все 5 вариантов представляются рисунками)
Любой отрезок имеет порождающую прямую, которую достаточно легко можно представить в параметрической форме или в НФ.
Для определённости выберем параметрическую форму представления, т. е. отрезок (A,B),
в данном случае (b,c,d, dперп, bперп вектора)
AB(t)= A +bt
CD(u)=c+d*u
B=B-A
D=D-C
t и u принадлежат [0,1]
a+bt=c+du
введём с=c- A,
тогда bt=(c- A)+du=c+du
dперп*b*t= dперп*c+ dперп*d*u; dперп*d=0;
dперп*b*t= dперп*c
t= dперп*c/ dперп*b
если dперп*b<>0 умножим обе части на bперп
u= bперп*c/- bперп*d
u= bперп*c/ dперп*b
t и u принадлежат [0,1]
Полученное решение ещё не означает что отрезки пересекаются, поэтому для пересечения есть 2 условия.
Если два отрезка AB и СD пересекаются в точке Е:
E=A+( dперп*c/ dперп*b)*b=c+( bперп*c/dперп*b)*d