home *** CD-ROM | disk | FTP | other *** search
- { Moving an object in 3D. }
- { }
- { by Crom / Spanish Lords Feb 96 }
- Program Prueba3D;
-
- Uses
- Crt,Memory,donut,DemoVga,Lib3D_v2;
-
- Const
- NumPoints = High (Points);
-
- Var
- { Temporaly storage }
- Temp : Array [0..NumPoints] of Point3D;
- { Are ESC key pressed? }
- Tecla : Char;
- { Memory variables }
- PtrBuffer : Pointer;
- SegBuffer : Word;
- { One counter ;) }
- Cnt : Word;
- { Rotations angles }
- XAngle : Integer;
- YAngle : Integer;
- ZAngle : Integer;
- { Final points }
- Xf,Yf : Word;
- { Point col. }
- Col : Byte;
-
- Procedure CreatePalette;
- Begin
- For Cnt:=0 to 63 do PutColor (Cnt,Cnt,Cnt,0);
- End;
-
- BEGIN
- McgaOn;
-
- CreatePalette;
-
- XAngle:= 0;
- YAngle:= 0;
- ZAngle:= 0;
- ZOrg := 260;
-
- PtrBuffer:= MemAllocseg (64000);
- SegBuffer:= Seg (PtrBuffer^);
-
- Repeat
-
- Fill64K (SegBuffer,0);
- Calc3DRotations (FastSin(XAngle),FastCos(XAngle),
- FastSin(YAngle),FastCos(YAngle),
- FastSin(ZAngle),FastCos(ZAngle),
- Points,Temp,High(Points));
- Proyect (160,100,High(Points),Temp,Temp);
- QuickSortZ (High(Faces),Temp,Faces);
- For Cnt:=0 to High (Faces) do
- Begin
- If Visible (Temp [Faces[Cnt,1],1],Temp [Faces[Cnt,1],2],
- Temp [Faces[Cnt,2],1],Temp [Faces[Cnt,2],2],
- Temp [Faces[Cnt,3],1],Temp [Faces[Cnt,3],2]) then
- Begin
- DrawLine (SegBuffer,Temp [Faces[Cnt,1],1],Temp [Faces[Cnt,1],2],Temp [Faces[Cnt,2],1],Temp [Faces[Cnt,2],2],
- Temp [Faces[Cnt,1],3]shr 2+25);
- DrawLine (SegBuffer,Temp [Faces[Cnt,1],1],Temp [Faces[Cnt,1],2],Temp [Faces[Cnt,3],1],Temp [Faces[Cnt,3],2],
- Temp [Faces[Cnt,1],3]shr 2+25);
- DrawLine (SegBuffer,Temp [Faces[Cnt,2],1],Temp [Faces[Cnt,2],2],Temp [Faces[Cnt,3],1],Temp [Faces[Cnt,3],2],
- Temp [Faces[Cnt,1],3]shr 2+25);
- End;
- End;
- VerticalRetrace;
- Copy64K (SegBuffer,$A000);
- Inc (XAngle,10);
- If XAngle>1024 then XAngle:=XAngle-1024;
- Inc (YAngle,3);
- If YAngle>1024 then YAngle:=YAngle-1024;
- Inc (ZAngle);
- If ZAngle>1024 then ZAngle:=ZAngle-1024;
- If Keypressed then Tecla:=ReadKey;
- Until Tecla=#27;
- FreeMem (PtrBuffer,64000);
- McgaOff;
- END.
-
-
-