Курсовая работа: Сечение многогранников
WindowProection[d].Canvas.MoveTo(Ser(d,V[ind1],Scene[d].M).X,Ser(d,V[ind1],Scene[d].M).Y);
WindowProection[d].Canvas.LineTo(Ser(d,V[ind2],Scene[d].M).X,Ser(d,V[ind2],Scene[d].M).Y);
end;
//* Нормальный вектор к грани
Function TForm1.Normal (A,B,C:Point):Vector;
begin
Normal.x:=((B.y-A.y)*(C.z-B.z))-((B.z-A.z)*(C.y-B.y));
Normal.y:=((B.z-A.z)*(C.x-B.x))-((B.x-A.x)*(C.z-B.z));
Normal.z:=((B.x-A.x)*(C.y-B.y))-((B.y-A.Y)*(C.x-B.x));
end;
//* Реализация поворота
Procedure Rotate(Ax,Ay,Az:real;Ox,Oy,Oz:real);{поворот вокруг оси все точки многогранника}
procedure Transfer(var T:Point;Ox,Oy,Oz:real);
var W:Point;
begin
T.x:=T.x-Ox;
T.y:=T.y-Oy;
T.z:=T.z-Oz;
end;
Procedure UnTransfer(var T:Point;Ox,Oy,Oz:real);
var W:Point;
begin
T.x:=T.x+Ox;
T.y:=T.y+Oy;
T.z:=T.z+Oz;
end;
Procedure RX(a:real; var P:Point);{поворот вокруг оси OX одной точки}
var Q:Point;
begin Q.x:=P.x; Q.y:=P.y*Cos(a)+P.z*Sin(a); Q.z:=-P.y*sin(a)+P.z*Cos(a); P:=Q end;