home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 11 / grafik8 / demo3d.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-09-04  |  4.4 KB  |  106 lines

  1. PROGRAM Demo3D(Input,Output);
  2.  
  3. CONST (*$I GRAFCONS.PAS *)
  4.  
  5. TYPE (*$I GRAFTYPE.PAS *)
  6.  
  7. VAR (*$I GRAFVAR.PAS *)
  8.     WinHandle : WinNrBereich;
  9.     Wuerfel : LinienObjekt;
  10.     NV, SV, BRP, PZ : tVektor;
  11.     F, B, WinU1, WinV1, WinU2, WinV2 : REAL;
  12.     i : INTEGER;
  13.  
  14. (*$I GRAFSYS.PAS  *)
  15. (*$I INTDDA.PAS   *)
  16. (*$I LINE.PAS     *)
  17. (*$I WINSYS.PAS   *)
  18. (*$I WINGRAF.PAS  *)
  19. (*$I CLIPOINT.PAS *)
  20. (*$I CLIPLINE.PAS *)
  21. (*$I TRANSMAT.PAS *)
  22. (*$I TRANSMA2.PAS *)
  23. (*$I TRANS3D.PAS  *)
  24. (*$I LINEOBJ2.PAS *)
  25. (*$I BLICKMAT.PAS *)
  26. (*$I CPLINE3D.PAS *)
  27. (*$I OBJ3D.PAS    *)
  28.  
  29. BEGIN
  30.   Enter_Graphic;
  31.   InitWindows;
  32.   (* Window & Viewport selectieren *)
  33.   WinHandle := SelectViewport(0,0,ScreenXmax,ScreenYMax);
  34.   SelectWorld(WinHandle,-15,-15,15,15);
  35.   Wuerfel[1].Vektor1[1] := -10;   Wuerfel[1].Vektor2[1] := 10;
  36.   Wuerfel[1].Vektor1[2] := 10;    Wuerfel[1].Vektor2[2] := 10;
  37.   Wuerfel[1].Vektor1[3] := 60;    Wuerfel[1].Vektor2[3] := 60;
  38.   Wuerfel[2].Vektor1[1] := -10;   Wuerfel[2].Vektor2[1] := 10;
  39.   Wuerfel[2].Vektor1[2] := -10;   Wuerfel[2].Vektor2[2] := -10;
  40.   Wuerfel[2].Vektor1[3] := 60;    Wuerfel[2].Vektor2[3] := 60;
  41.   Wuerfel[3].Vektor1[1] := -10;   Wuerfel[3].Vektor2[1] := -10;
  42.   Wuerfel[3].Vektor1[2] := -10;   Wuerfel[3].Vektor2[2] := 10;
  43.   Wuerfel[3].Vektor1[3] := 60;    Wuerfel[3].Vektor2[3] := 60;
  44.   Wuerfel[4].Vektor1[1] := 10;    Wuerfel[4].Vektor2[1] :=  10;
  45.   Wuerfel[4].Vektor1[2] := -10;   Wuerfel[4].Vektor2[2] := 10;
  46.   Wuerfel[4].Vektor1[3] := 60;    Wuerfel[4].Vektor2[3] := 60;
  47.   Wuerfel[5].Vektor1[1] := -10;   Wuerfel[5].Vektor2[1] := 10;
  48.   Wuerfel[5].Vektor1[2] := 10;    Wuerfel[5].Vektor2[2] := 10;
  49.   Wuerfel[5].Vektor1[3] := 40;    Wuerfel[5].Vektor2[3] := 40;
  50.   Wuerfel[6].Vektor1[1] := -10;   Wuerfel[6].Vektor2[1] := 10;
  51.   Wuerfel[6].Vektor1[2] := -10;   Wuerfel[6].Vektor2[2] := -10;
  52.   Wuerfel[6].Vektor1[3] := 40;    Wuerfel[6].Vektor2[3] := 40;
  53.   Wuerfel[7].Vektor1[1] := -10;   Wuerfel[7].Vektor2[1] := -10;
  54.   Wuerfel[7].Vektor1[2] := -10;   Wuerfel[7].Vektor2[2] := 10;
  55.   Wuerfel[7].Vektor1[3] := 40;    Wuerfel[7].Vektor2[3] := 40;
  56.   Wuerfel[8].Vektor1[1] := 10;    Wuerfel[8].Vektor2[1] :=  10;
  57.   Wuerfel[8].Vektor1[2] := -10;   Wuerfel[8].Vektor2[2] := 10;
  58.   Wuerfel[8].Vektor1[3] := 40;    Wuerfel[8].Vektor2[3] := 40;
  59.   Wuerfel[9].Vektor1[1] := -10;   Wuerfel[9].Vektor2[1] := -10;
  60.   Wuerfel[9].Vektor1[2] := 10;    Wuerfel[9].Vektor2[2] := 10;
  61.   Wuerfel[9].Vektor1[3] := 40;    Wuerfel[9].Vektor2[3] := 60;
  62.   Wuerfel[10].Vektor1[1] := 10;   Wuerfel[10].Vektor2[1] := 10;
  63.   Wuerfel[10].Vektor1[2] := 10;   Wuerfel[10].Vektor2[2] := 10;
  64.   Wuerfel[10].Vektor1[3] := 40;   Wuerfel[10].Vektor2[3] := 60;
  65.   Wuerfel[11].Vektor1[1] := -10;  Wuerfel[11].Vektor2[1] := -10;
  66.   Wuerfel[11].Vektor1[2] := -10;  Wuerfel[11].Vektor2[2] := -10;
  67.   Wuerfel[11].Vektor1[3] := 40;   Wuerfel[11].Vektor2[3] := 60;
  68.   Wuerfel[12].Vektor1[1] := 10;   Wuerfel[12].Vektor2[1] := 10;
  69.   Wuerfel[12].Vektor1[2] := -10;  Wuerfel[12].Vektor2[2] := -10;
  70.   Wuerfel[12].Vektor1[3] := 40;   Wuerfel[12].Vektor2[3] := 60;
  71.  
  72.   (* "Spielen" an diesen Parameter veranschaulicht die Effekte *)
  73.   BRP[1] := 0;  BRP[2] := 0; BRP[3] := 40;
  74.   NV[1] := 0;  NV[2] := 0;  NV[3] := 1;
  75.   SV[1] := 0; SV[2] := 1;  SV[3] := 0; (* Drehungen der PE *)
  76.   PZ[1] := 0;  PZ[2] := 0;  PZ[3] := 20; (* Relativ zu BRP ! *)
  77.   F := -100; B := 100;
  78.   WinU1 := -100; WinU2 := 100;  WinV1 := -100;  WinV2 := 100;
  79.  
  80.   FOR i := 1 TO 5 DO BEGIN (* PE an Objekt heranfuehren *)
  81.     PZ[3] := i*3;
  82.     Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,FALSE);
  83.     Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,TRUE);
  84.   END;
  85.   FOR i := 1 TO 5 DO BEGIN (* PE drehen *)
  86.     SV[1] := SV[1] + 0.1;
  87.     SV[2] := SV[2] - 0.1;
  88.     Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,FALSE);
  89.     Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,TRUE);
  90.   END;
  91.   SV[1] := 0;
  92.   SV[2] := 1;
  93.   FOR i := 1 TO 5 DO BEGIN
  94.     NV[2] := NV[2] - 0.1;  (* NV nach "vorne" kippen *)
  95.     NV[3] := NV[3] + 0.1;  (* PE nach "vorne neigen  *)
  96.     SV[2] := SV[2] - 0.1;  (* SV nach "vorne" kippen *)
  97.     SV[3] := SV[3] + 0.1;  (* "Kopf" nach "vorne" neigen *)
  98.     BRP[2] := BRP[2] + 1;
  99.     BRP[3] := BRP[3] - 2;
  100.     Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,FALSE);
  101.     Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,TRUE);
  102.   END;
  103.   CloseWindow(WinHandle);
  104.   Exit_Graphic;
  105. END.
  106.