Курсовая работа: Сечение многогранников
var Q:Point;
begin Q.x:=P.x*Cos(a)-P.z*Sin(a);Q.y:=P.y;Q.z:=P.x*sin(a)+P.z*Cos(a); P:=Q end;
Procedure RZ(a:real; var P:Point);{поворот вокруг оси OZ одной точки}
var Q:Point;
begin Q.x:=P.x*Cos(a)-P.y*Sin(a);Q.y:=P.x*Sin(a)+P.y*Cos(a);Q.z:=P.z; P:=Q end;
var i:integer;
begin
if Form1.N17.Checked then
for i:=1 to Count do begin Transfer(InterPoint[i],Ox,Oy,Oz);RX(Ax,InterPoint[i]);RY(Ay,InterPoint[i]);RZ(Az,InterPoint[i]);UnTransfer(InterPoint[i],Ox,Oy,Oz) end;
for i:=1 to N do begin Transfer(V[i],Ox,Oy,Oz);RX(Ax,V[i]);RY(Ay,V[i]);RZ(Az,V[i]);UnTransfer(V[i],Ox,Oy,Oz); end;
end;
//* Реализация перемещение
Procedure Move(Lx,Ly,Lz:real);
var i:integer;
begin
if Form1.N17.Checked then
for i:=1 to Count do begin InterPoint[i].x:=InterPoint[i].x+Lx;InterPoint[i].y:=InterPoint[i].y+Ly;InterPoint[i].z:=InterPoint[i].z+Lz; end;
for i:=1 to N do begin V[i].x:=V[i].x+Lx;V[i].y:=V[i].y+Ly;V[i].z:=V[i].z+Lz end;
end;
//* Размещение осей перемещения
Procedure MoveOs;
begin
if Form1.Centr.Left+Form1.Centr.Width>Form1.ClientWidth then
Form1.Centr.Left:=Form1.ClientWidth-Form1.Centr.Width;
if Form1.Centr.Top+Form1.Centr.Height>Form1.GroupBox1.Top then
Form1.Centr.Top:=Form1.GroupBox1.Top-Form1.Centr.Height;
if Form1.Centr.Top<Form1.ToolBar1.Top+Form1.ToolBar1.Height then
Form1.Centr.Top:=Form1.ToolBar1.Top+Form1.ToolBar1.Height;
Form1.Vertikal.Top:=Form1.ToolB