Нашел вот этот текст программы созданной в Паскале (вроде то что надо)...
PROGRAM lab5;
uses graph,crt;
const n=8;
type v=array [1..4] of real;mat=array [1..4,1..4] of real;
matob=array [1..n] of v;
const t:matob=((200,200,200,1),(300,200,200,1),(300,300,200,1),(200,300,200,1),
(200,200,100,1),(300,200,100,1),(300,300,100,1),(200,300,100,1));
m:mat=((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1));
e:mat=((1,0,0,0),(0,1,0,0),(0.35,-0.35,0,0),(0,0,0,1));
var mm:mat;pt:matob;i:byte;dr,reg,u:integer;smx,smy,x,y:real;
procedure draw(ot:matob;cv:byte);
var i:byte;
procedure lin(oo:matob;p,q:byte);
begin
line(trunc(oo[p,1]),trunc(oo[p,2]),trunc(oo[q,1]),trunc(oo[q,2]));
end;
begin
setcolor(cv);
for i:=1 to n div 2-1 do
lin(ot,i,i+1);
lin(ot,1,4);
for i:=n div 2+1 to n-1 do
lin(ot,i,i+1);
lin(ot,n div 2+1,n);
for i:=1 to 4 do lin(ot,i,i+4);
end;
procedure mult(a:v;b:mat;var pv:v);
var
i,j:byte;
begin
for j:=1 to 4 do
begin
pv[j]:=0;for i:=1 to 4 do
pv[j]:=pv[j]+a*b[i,j]
end;
if pv[4]<>1 then
for i:=1 to 4 do
pv:=pv/pv[4]
end;
procedure povorot(ugol:integer);
var p:real;
begin
p:=ugol*2*pi/360;
m[2,2]:=cos(p);m[2,3]:=sin(p);m[3,2]:=-sin(p);m[3,3]:=cos(p)
end;
procedure sme(sx,sy,sz:real);
begin
for i:=1 to n do
begin
t[i,1]:=t[i,1]+sx;t[i,2]:=t[i,2]+sy;t[i,3]:=t[i,3]+sz
end
end;
procedure mas(mx,my,mz:real);
begin
m[1,1]:=mx;m[2,2]:=my;m[3,3]:=mz
end;
begin
dr:=detect;
initgraph(dr,reg,'') ;
setbkcolor(15);
for i:=1 to n do
mult(t,e,pt);
draw(pt,red);
readln;
repeat
sme(-200,-300,-200);
povorot(2);
for i:=1 to n do
mult(t,m,t);
sme(200,300,200);
for i:=1 to n do
mult(t,e,pt);
draw(pt,blue);
delay(100);
cleardevice;
until keypressed;
closegraph;
end.
Но как эту программу прописать в делфи с помощью какова компонента это всё реализовать???
Так чтоб было всё выполнено в Виндовс форме... Чтоб также крутился этот квадрат???