Advertisement
Guest User

Untitled

a guest
Apr 17th, 2014
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.95 KB | None | 0 0
  1. procedure TForm1.Button4Click(Sender: TObject);
  2. {Ïîñëåäîâàòåëüíîñòü îáõîäà âåðøèí åäèíè÷íîãî êóáà ïðè ðèñîâàíèè}
  3. const cubinit:array [1..16,1..3] of real =
  4. ((0,0,0), (1,0,0), (1,1,0), (0,1,0),
  5. (0,0,0), (0,0,1), (1,0,1), (1,0,0),
  6. (1,0,1), (1,1,1), (1,1,0), (1,1,1),
  7. (0,1,1), (0,1,0), (0,1,1), (0,0,1));
  8. var Mx,My,i,j:integer; Pause:real;
  9. cub:array [1..16,1..3] of real;
  10. cubpro:array [1..16,1..2] of integer;
  11. {--------------------------------------------------------------}
  12. procedure ProCub; {Ðàñ÷åò êîîðäèíàò ïðîåêöèè êóáà}
  13. var i:integer;
  14. begin
  15. for i:=1 to 16 do
  16. begin
  17. cubpro[i,1]:=Round(cub[i,2]-0.3535534*cub[i,3]);
  18. cubpro[i,2]:=Round(cub[i,1]-0.3535534*cub[i,3]);
  19. end;
  20. end;
  21. {--------------------------------------------------------------}
  22. procedure TranCub(d:real);{Äâèæåíèå êóáà â ãëóáèíó ïðîñòðàíñòâà}
  23. var i:integer;
  24. begin for i:=1 to 16 do cub[i,3]:=cub[i,3]+d; end;
  25. {--------------------------------------------------------------}
  26. procedure RisCub(cv:integer); {Èçîáðàæåíèå ïðîåêöèè êóáà}
  27. var i:integer;
  28. begin
  29. canvas.Pen.Color:=cv;
  30. canvas.MoveTo(cubpro[1,1],cubpro[1,2]);
  31. for i:=2 to 16 do canvas.LineTo(cubpro[i,1],cubpro[i,2]);
  32. end;
  33. begin
  34. for i:=1 to 16 do {Êîïèÿ èñõîäíîãî êóáà}
  35. for j:=1 to 3 do cub[i,j]:=cubinit[i,j];
  36. canvas.Pen.Width:=1;
  37. Mx:=Form1.Width div 2;
  38. My:=Form1.Height div 2;
  39. {Ìàñøòàáèðîâàíèå è ñäâèã èñõîäíîãî èçîáðàæåíèÿ â íà÷àëüíóþ
  40. 6
  41. ïîçèöèþ}
  42. for i:=1 to 16 do
  43. begin
  44. for j:=1 to 3 do cub[i,j]:=cub[i,j]*20;
  45. cub[i,1]:=cub[i,1]+My;
  46. cub[i,2]:=cub[i,2]+Mx;
  47. end;
  48. repeat {Öèêë äâèæåíèÿ}
  49. ProCub; RisCub(clBlue);
  50. Pause:=Time; {Îðãàíèçàöèÿ ïàóçû}
  51. while (Time-Pause) < 1e-7 do;
  52. RisCub(clBtnFace); {Ñïðÿòàòü êóá}
  53. TranCub(5); {Ñìåñòèòü êóá}
  54. until cubpro[2,1]<100;
  55. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement