4. Описание реализации применяемых методов.
Первый этап: ”Вычисление коэффициентов плоскости”.
Коэффициенты плоскости вычисляются с помощью метода Ньюэла следующим образом:
A=(YA-YB)*(ZA+ZB)+(YB-YC)*(ZB+ZC)+(YC-YA)*(ZC+ZA);
B=(ZA-ZB)*(XA+XB)+(ZB-ZC)*(XB+XC)+(ZC-ZA)*(XC+XA);
C=(XA-XB)*(YA+YB)+(XB-XC)*(YB+YC)+(XC-XA)*(YC+YA);
D=-(A*XA+B*YA+C*ZA),
где A, B, C, D – коэффициенты плоскости; (XA, YA,ZA), (XB,YB,ZB) и (XC,YC,ZC) точки принадлежащие данной плоскости.
Второй этап: “Нахождение точки пересечения плоскости и прямой”.
if((A*(XM - XN) + B*(YM - YN) + C*(ZM - ZN))!=0)
{
t=(float)(A*XM + B*YM + C*ZM + D)/(float)(A*(XM - XN) + B*(YM - YN) + C*(ZM - ZN));
};
if (t>=0 && t<=1)
{
XT =XM + (float)(XN - XM)*t;
YT =YM + (float)(YN - YM)*t;
ZT =ZM + (float)(ZN - ZM)*t;
}
где t –это параметр; (XT,YT,ZT) – точка пересечения прямой и плоскости.
Третий этап: ” Определение видимости отрезка”.
if(B<0)
{
A=-A;
B=-B;
C=-C;
D=-D;
}
if((A*XM + B*YM + C*ZM +D)>0)
{
visiblm = true;
}
else if((A*XM + B*YM + C*ZM +D)<0)
{
visiblm = false;
};
if((A*XN + B*YN + C*ZN +D)>0)
{
visibln = true;
}
else if((A*XN + B*YN + C*ZN +D)<0)
{
visibln = false;
}
else if((A==0 && B==0 && C==0)||((A*(XM - XN) + B*(YM - YN) + C*(ZM - ZN))==0)||abs(B)<delta)
{
visibln = true;
visiblm = true;
}
Если значение visibln (visiblm) принимает значение true то точка N (M), принадлежащая линии, является видимой, если false, то невидима.
4,5: Построение пространственного чертежа;
Для перерасчета мировых координат x, y, z точки A воспользуемся формулами:
Xa=X0-(x-y*cos (α))
Ya=Y0-(z-y*sin (α))
Пересчитаем координаты проекций точки A:
XA1=X0-(x-y*cosα)
XA2=X0+y*cosα
YA1=Y0+y*sinα
YA2=Y0-(z-y*sinα)
XA3=X0-x
YA3=Y0-z
Теперь нужно соединить все точки отрезками для получения параллелограмма. И, наконец, обвести саму точку.
Чертеж построен.
Построение комплексного чертежа;
Для построения данного чертежа необходим выполнить следующую последовательность действий:
на оси абсцисс от начала координат откложить отрезок OAX = x
через точку AX провести перпендикуляр к оси Ox, на котором с учетом знаков отложить отрезки AXA1 = y (получаем A1) и AXA2 = z ((получаем A2).
через A2 провести прямую A2AZ ^Oz.
Т.к. AZA3 = OAY = AXA1 = y, то AZA3 равно y. Отрезок AZA3 отложить вправо от оси Oz, если y > 0, и влево, если y < 0.
Тогда:
XA1=X0-x
YA1=Y0+y
XA2=X0-x
YA2=Y0-z
XA3=X0+y
YA3=Y0-z
Комплексный чертеж построен.