Есть программа, которая осуществляет вращение пирамиды с треугольным основанием, как из неё сделать сабж?
uses crt,graph;
type
coords = record
x,y,z:byte;
end;
type
save = record
q,w,e,r: coords;
t:byte;
end;
var a,b,c,d:coords;
alpha,r,dx1,dy1,dx2,dy2,x,y,z,mx,my,mz,gm,gd:integer;
alp: real ;
ca:char;
s:string;
f:file of save;
f1: save;
BEGIN
repeat
clrscr;
gm:=detect;
writeln('Press "1" to enter new coords');
Writeln('Press "2" to read coords from file');
Writeln('Press "3" to EXIT');
readln(r);
if r=1 then
begin
clrscr;
writeln('Enter A(x,y,z)');
readln(a.x,a.y,a.z);
writeln('Enter B(x,y,z)');
readln(b.x,b.y,b.z);
writeln('Enter C(x,y,z)');
readln(c.x,c.y,c.z);
writeln('Enter D(x,y,z)');
readln(d.x,d.y,d.z);
writeln('Enter Alpha');
readln(alpha);
end;
if r=2 then
begin
clrscr;
writeln('Enter name of file');
readln(s);
assign(f,s);
reset(f);
read(f,f1);
a:=f1.q; b:=f1.w; c:=f1.e; d:=f1.r; alpha:=f1.t;
end;
if r=3 then break;
{ alpha:=45;
a.x:=0;
a.y:=0;
a.z:=0;
b.x:=140;
b.y:=0;
b.z:=0;
c.x:=0;
c.y:=0;
c.z:=140;
d.x:=0;
d.y:=200;
d.z:=0; }
initgraph(gm,gd,'');
repeat
alp:=pi/180*alpha;
setcolor(white);
str(alpha,s);
outtextxy(0,0,s);
setcolor(yellow);
dy2:=round(cos(alp)*300);
dx2:=round(sin(alp)*300);
line(200,480-200,200-dx2,480+dy2-200);
line(200,480-200,640,480-200);
line(200,480-200,200,0);
setcolor(green);
dy1:=round(cos(alp)*a.y);
dx1:=round(sin(alp)*a.y);
dy2:=round(cos(alp)*b.y);
dx2:=round(sin(alp)*b.y);
line(200+a.x-dx1,280-a.z+dy1,200+b.x-dx2,280-b.z+dy2);
dy1:=round(cos(alp)*b.y);
dx1:=round(sin(alp)*b.y);
dy2:=round(cos(alp)*c.y);
dx2:=round(sin(alp)*c.y);
line(200+b.x-dx1,280-b.z+dy1,200+c.x-dx2,280-c.z+dy2);
dy1:=round(cos(alp)*c.y);
dx1:=round(sin(alp)*c.y);
dy2:=round(cos(alp)*d.y);
dx2:=round(sin(alp)*d.y);
line(200+c.x-dx1,280-c.z+dy1,200+d.x-dx2,280-d.z+dy2);
dy1:=round(cos(alp)*a.y);
dx1:=round(sin(alp)*a.y);
dy2:=round(cos(alp)*c.y);
dx2:=round(sin(alp)*c.y);
line(200+a.x-dx1,280-a.z+dy1,200+c.x-dx2,280-c.z+dy2);
dy1:=round(cos(alp)*a.y);
dx1:=round(sin(alp)*a.y);
dy2:=round(cos(alp)*d.y);
dx2:=round(sin(alp)*d.y);
line(200+a.x-dx1,280-a.z+dy1,200+d.x-dx2,280-d.z+dy2);
dy1:=round(cos(alp)*b.y);
dx1:=round(sin(alp)*b.y);
dy2:=round(cos(alp)*d.y);
dx2:=round(sin(alp)*d.y);
line(200+b.x-dx1,280-b.z+dy1,200+d.x-dx2,280-d.z+dy2);
ca:=readkey;
if ca = 'w' then alpha:=alpha+1;
if ca = 's' then alpha:=alpha-1;
if alpha=361 then alpha:=1;
if alpha=-1 then alpha:=359;
cleardevice;
until ca='q';
closegraph;
clrscr;
writeln('1 - Save data');
writeln('2 - Go to main menu');
writeln('3 - EXIT');
readln(r);
if r=1 then
begin
writeln('enter name of save');
readln(s);
f1.q:=a; f1.w:=b; f1.e:=c; f1.r:=d; f1.t:=alpha;
assign(f,s);
rewrite(f);
write(f,f1);
end;
until r=3;
END.