Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure TForm1.Button4Click(Sender: TObject);
- {Ïîñëåäîâàòåëüíîñòü îáõîäà âåðøèí åäèíè÷íîãî êóáà ïðè ðèñîâàíèè}
- const cubinit:array [1..16,1..3] of real =
- ((0,0,0), (1,0,0), (1,1,0), (0,1,0),
- (0,0,0), (0,0,1), (1,0,1), (1,0,0),
- (1,0,1), (1,1,1), (1,1,0), (1,1,1),
- (0,1,1), (0,1,0), (0,1,1), (0,0,1));
- var Mx,My,i,j:integer; Pause:real;
- cub:array [1..16,1..3] of real;
- cubpro:array [1..16,1..2] of integer;
- {--------------------------------------------------------------}
- procedure ProCub; {Ðàñ÷åò êîîðäèíàò ïðîåêöèè êóáà}
- var i:integer;
- begin
- for i:=1 to 16 do
- begin
- cubpro[i,1]:=Round(cub[i,2]-0.3535534*cub[i,3]);
- cubpro[i,2]:=Round(cub[i,1]-0.3535534*cub[i,3]);
- end;
- end;
- {--------------------------------------------------------------}
- procedure TranCub(d:real);{Äâèæåíèå êóáà â ãëóáèíó ïðîñòðàíñòâà}
- var i:integer;
- begin for i:=1 to 16 do cub[i,3]:=cub[i,3]+d; end;
- {--------------------------------------------------------------}
- procedure RisCub(cv:integer); {Èçîáðàæåíèå ïðîåêöèè êóáà}
- var i:integer;
- begin
- canvas.Pen.Color:=cv;
- canvas.MoveTo(cubpro[1,1],cubpro[1,2]);
- for i:=2 to 16 do canvas.LineTo(cubpro[i,1],cubpro[i,2]);
- end;
- begin
- for i:=1 to 16 do {Êîïèÿ èñõîäíîãî êóáà}
- for j:=1 to 3 do cub[i,j]:=cubinit[i,j];
- canvas.Pen.Width:=1;
- Mx:=Form1.Width div 2;
- My:=Form1.Height div 2;
- {Ìàñøòàáèðîâàíèå è ñäâèã èñõîäíîãî èçîáðàæåíèÿ â íà÷àëüíóþ
- 6
- ïîçèöèþ}
- for i:=1 to 16 do
- begin
- for j:=1 to 3 do cub[i,j]:=cub[i,j]*20;
- cub[i,1]:=cub[i,1]+My;
- cub[i,2]:=cub[i,2]+Mx;
- end;
- repeat {Öèêë äâèæåíèÿ}
- ProCub; RisCub(clBlue);
- Pause:=Time; {Îðãàíèçàöèÿ ïàóçû}
- while (Time-Pause) < 1e-7 do;
- RisCub(clBtnFace); {Ñïðÿòàòü êóá}
- TranCub(5); {Ñìåñòèòü êóá}
- until cubpro[2,1]<100;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement