home *** CD-ROM | disk | FTP | other *** search
- PROGRAM Demo3D(Input,Output);
-
- CONST (*$I GRAFCONS.PAS *)
-
- TYPE (*$I GRAFTYPE.PAS *)
-
- VAR (*$I GRAFVAR.PAS *)
- WinHandle : WinNrBereich;
- Wuerfel : LinienObjekt;
- NV, SV, BRP, PZ : tVektor;
- F, B, WinU1, WinV1, WinU2, WinV2 : REAL;
- i : INTEGER;
-
- (*$I GRAFSYS.PAS *)
- (*$I INTDDA.PAS *)
- (*$I LINE.PAS *)
- (*$I WINSYS.PAS *)
- (*$I WINGRAF.PAS *)
- (*$I CLIPOINT.PAS *)
- (*$I CLIPLINE.PAS *)
- (*$I TRANSMAT.PAS *)
- (*$I TRANSMA2.PAS *)
- (*$I TRANS3D.PAS *)
- (*$I LINEOBJ2.PAS *)
- (*$I BLICKMAT.PAS *)
- (*$I CPLINE3D.PAS *)
- (*$I OBJ3D.PAS *)
-
- BEGIN
- Enter_Graphic;
- InitWindows;
- (* Window & Viewport selectieren *)
- WinHandle := SelectViewport(0,0,ScreenXmax,ScreenYMax);
- SelectWorld(WinHandle,-15,-15,15,15);
- Wuerfel[1].Vektor1[1] := -10; Wuerfel[1].Vektor2[1] := 10;
- Wuerfel[1].Vektor1[2] := 10; Wuerfel[1].Vektor2[2] := 10;
- Wuerfel[1].Vektor1[3] := 60; Wuerfel[1].Vektor2[3] := 60;
- Wuerfel[2].Vektor1[1] := -10; Wuerfel[2].Vektor2[1] := 10;
- Wuerfel[2].Vektor1[2] := -10; Wuerfel[2].Vektor2[2] := -10;
- Wuerfel[2].Vektor1[3] := 60; Wuerfel[2].Vektor2[3] := 60;
- Wuerfel[3].Vektor1[1] := -10; Wuerfel[3].Vektor2[1] := -10;
- Wuerfel[3].Vektor1[2] := -10; Wuerfel[3].Vektor2[2] := 10;
- Wuerfel[3].Vektor1[3] := 60; Wuerfel[3].Vektor2[3] := 60;
- Wuerfel[4].Vektor1[1] := 10; Wuerfel[4].Vektor2[1] := 10;
- Wuerfel[4].Vektor1[2] := -10; Wuerfel[4].Vektor2[2] := 10;
- Wuerfel[4].Vektor1[3] := 60; Wuerfel[4].Vektor2[3] := 60;
- Wuerfel[5].Vektor1[1] := -10; Wuerfel[5].Vektor2[1] := 10;
- Wuerfel[5].Vektor1[2] := 10; Wuerfel[5].Vektor2[2] := 10;
- Wuerfel[5].Vektor1[3] := 40; Wuerfel[5].Vektor2[3] := 40;
- Wuerfel[6].Vektor1[1] := -10; Wuerfel[6].Vektor2[1] := 10;
- Wuerfel[6].Vektor1[2] := -10; Wuerfel[6].Vektor2[2] := -10;
- Wuerfel[6].Vektor1[3] := 40; Wuerfel[6].Vektor2[3] := 40;
- Wuerfel[7].Vektor1[1] := -10; Wuerfel[7].Vektor2[1] := -10;
- Wuerfel[7].Vektor1[2] := -10; Wuerfel[7].Vektor2[2] := 10;
- Wuerfel[7].Vektor1[3] := 40; Wuerfel[7].Vektor2[3] := 40;
- Wuerfel[8].Vektor1[1] := 10; Wuerfel[8].Vektor2[1] := 10;
- Wuerfel[8].Vektor1[2] := -10; Wuerfel[8].Vektor2[2] := 10;
- Wuerfel[8].Vektor1[3] := 40; Wuerfel[8].Vektor2[3] := 40;
- Wuerfel[9].Vektor1[1] := -10; Wuerfel[9].Vektor2[1] := -10;
- Wuerfel[9].Vektor1[2] := 10; Wuerfel[9].Vektor2[2] := 10;
- Wuerfel[9].Vektor1[3] := 40; Wuerfel[9].Vektor2[3] := 60;
- Wuerfel[10].Vektor1[1] := 10; Wuerfel[10].Vektor2[1] := 10;
- Wuerfel[10].Vektor1[2] := 10; Wuerfel[10].Vektor2[2] := 10;
- Wuerfel[10].Vektor1[3] := 40; Wuerfel[10].Vektor2[3] := 60;
- Wuerfel[11].Vektor1[1] := -10; Wuerfel[11].Vektor2[1] := -10;
- Wuerfel[11].Vektor1[2] := -10; Wuerfel[11].Vektor2[2] := -10;
- Wuerfel[11].Vektor1[3] := 40; Wuerfel[11].Vektor2[3] := 60;
- Wuerfel[12].Vektor1[1] := 10; Wuerfel[12].Vektor2[1] := 10;
- Wuerfel[12].Vektor1[2] := -10; Wuerfel[12].Vektor2[2] := -10;
- Wuerfel[12].Vektor1[3] := 40; Wuerfel[12].Vektor2[3] := 60;
-
- (* "Spielen" an diesen Parameter veranschaulicht die Effekte *)
- BRP[1] := 0; BRP[2] := 0; BRP[3] := 40;
- NV[1] := 0; NV[2] := 0; NV[3] := 1;
- SV[1] := 0; SV[2] := 1; SV[3] := 0; (* Drehungen der PE *)
- PZ[1] := 0; PZ[2] := 0; PZ[3] := 20; (* Relativ zu BRP ! *)
- F := -100; B := 100;
- WinU1 := -100; WinU2 := 100; WinV1 := -100; WinV2 := 100;
-
- FOR i := 1 TO 5 DO BEGIN (* PE an Objekt heranfuehren *)
- PZ[3] := i*3;
- Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,FALSE);
- Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,TRUE);
- END;
- FOR i := 1 TO 5 DO BEGIN (* PE drehen *)
- SV[1] := SV[1] + 0.1;
- SV[2] := SV[2] - 0.1;
- Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,FALSE);
- Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,TRUE);
- END;
- SV[1] := 0;
- SV[2] := 1;
- FOR i := 1 TO 5 DO BEGIN
- NV[2] := NV[2] - 0.1; (* NV nach "vorne" kippen *)
- NV[3] := NV[3] + 0.1; (* PE nach "vorne neigen *)
- SV[2] := SV[2] - 0.1; (* SV nach "vorne" kippen *)
- SV[3] := SV[3] + 0.1; (* "Kopf" nach "vorne" neigen *)
- BRP[2] := BRP[2] + 1;
- BRP[3] := BRP[3] - 2;
- Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,FALSE);
- Objekt3D(Wuerfel,12,NV,SV,BRP,PZ,F,B,WinU1,WinV1,WinU2,WinV2,TRUE);
- END;
- CloseWindow(WinHandle);
- Exit_Graphic;
- END.