home *** CD-ROM | disk | FTP | other *** search
- {
- Vulkanus program....
- By Skynet 'My Computer, My God, My Friend, My mind...' }
-
-
- PROGRAM ALYSYUM;
-
- Uses Crt, Grflib, Grafiks;
-
- Const DISTANCIA=1;
- Tecta=0.017453292519943295769;
- COST =0.999847695156391239157;
- SINT =0.017452406437283512819;
-
- Type TresD= Record
- X,Y,Z:extended;
- End;
- Estel =Array[1..14] of TresD;
-
- Var dades:Estel;
- I,OrigeX,OrigeY,sentitX,sentitY:Integer;
- PV,PV2:Byte;
- c:Extended;
-
- Procedure Valors(Var d:Estel);
-
- Begin
- d [1].x:= 0; d [1].y:= 80; d [1].z:= 0;
- d [2].x:= 80; d [2].y:= 0; d [2].z:= 0;
- d [3].x:= 0; d [3].y:= -80; d [3].z:= 0;
- d [4].x:= -80; d [4].y:= 0; d [4].z:= 0;
- d [5].x:= -20; d [5].y:= 20; d [5].z:= -20;
- d [6].x:= -20; d [6].y:= 20; d [6].z:= 20;
- d [7].x:= 20; d [7].y:= 20; d [7].z:= 20;
- d [8].x:= 20; d [8].y:= 20; d [8].z:= -20;
- d [9].x:= -20; d [9].y:= -20; d [9].z:= -20;
- d[10].x:= 20; d[10].y:= -20; d[10].z:= -20;
- d[11].x:= 20; d[11].y:= -20; d[11].z:= 20;
- d[12].x:= -20; d[12].y:= -20; d[12].z:= 20;
- d[13].x:= 0; d[13].y:= 0; d[13].z:= 80;
- d[14].x:= 0; d[14].y:= 0; d[14].z:= -80;
- End;
-
- Procedure lines(x1, y1, x2, y2: extended;c,pv:byte;origeX,OrigeY:integer);
- Begin
- fLinea(round(x1) + origeX,round(y1) + origeY,round(x2) + origeX,round(y2) + origeY,c,PV);
- End;
-
- Procedure Dibuixar(d:Estel;c:integer;pv:byte;OX,OY:Integer);
-
- Begin
- Lines(d [1].x,d [1].y,d [5].x,d [5].y,c,pv,ox,oy);
- Lines(d [1].x,d [1].y,d [6].x,d [6].y,c,pv,ox,oy);
- Lines(d [1].x,d [1].y,d [7].x,d [7].y,c,pv,ox,oy);
- Lines(d [1].x,d [1].y,d [8].x,d [8].y,c,pv,ox,oy);
- Lines(d [4].x,d [4].y,d [5].x,d [5].y,c,pv,ox,oy);
- Lines(d [4].x,d [4].y,d [6].x,d [6].y,c,pv,ox,oy);
- Lines(d [4].x,d [4].y,d [9].x,d [9].y,c,pv,ox,oy);
- Lines(d [4].x,d [4].y,d[12].x,d[12].y,c,pv,ox,oy);
- Lines(d [2].x,d [2].y,d [7].x,d [7].y,c,pv,ox,oy);
- Lines(d [2].x,d [2].y,d [8].x,d [8].y,c,pv,ox,oy);
- Lines(d [2].x,d [2].y,d[11].x,d[11].y,c,pv,ox,oy);
- Lines(d [2].x,d [2].y,d[10].x,d[10].y,c,pv,ox,oy);
- Lines(d [3].x,d [3].y,d [9].x,d [9].y,c,pv,ox,oy);
- Lines(d [3].x,d [3].y,d[10].x,d[10].y,c,pv,ox,oy);
- Lines(d [3].x,d [3].y,d[12].x,d[12].y,c,pv,ox,oy);
- Lines(d [3].x,d [3].y,d[11].x,d[11].y,c,pv,ox,oy);
- Lines(d[13].x,d[13].y,d [6].x,d [6].y,c,pv,ox,oy);
- Lines(d[13].x,d[13].y,d [7].x,d [7].y,c,pv,ox,oy);
- Lines(d[13].x,d[13].y,d[12].x,d[12].y,c,pv,ox,oy);
- Lines(d[13].x,d[13].y,d[11].x,d[11].y,c,pv,ox,oy);
- Lines(d[14].x,d[14].y,d [5].x,d [5].y,c,pv,ox,oy);
- Lines(d[14].x,d[14].y,d [8].x,d [8].y,c,pv,ox,oy);
- Lines(d[14].x,d[14].y,d [9].x,d [9].y,c,pv,ox,oy);
- Lines(d[14].x,d[14].y,d[10].x,d[10].y,c,pv,ox,oy);
- Lines(d [6].x,d [6].y,d [5].x,d [5].y,c,pv,ox,oy);
- Lines(d [6].x,d [6].y,d [7].x,d [7].y,c,pv,ox,oy);
- Lines(d [6].x,d [6].y,d[12].x,d[12].y,c,pv,ox,oy);
- Lines(d[10].x,d[10].y,d [9].x,d [9].y,c,pv,ox,oy);
- Lines(d[10].x,d[10].y,d [8].x,d [8].y,c,pv,ox,oy);
- Lines(d[10].x,d[10].y,d[11].x,d[11].y,c,pv,ox,oy);
- Lines(d [8].x,d [8].y,d [5].x,d [5].y,c,pv,ox,oy);
- Lines(d [8].x,d [8].y,d [7].x,d [7].y,c,pv,ox,oy);
- Lines(d[11].x,d[11].y,d [7].x,d [7].y,c,pv,ox,oy);
- Lines(d[11].x,d[11].y,d[12].x,d[12].y,c,pv,ox,oy);
- Lines(d[12].x,d[12].y,d [9].x,d [9].y,c,pv,ox,oy);
- Lines(d [9].x,d [9].y,d [5].x,d [5].y,c,pv,ox,oy);
- End;
-
- Procedure Rotx(var Dades:Estel);
- Var i : integer;
- Begin
- for i := 1 to 14 do
- begin
- dades[i].x := dades[i].x;
- dades[i].y :=dades[i].y * cost + dades[i].z * sint;
- dades[i].z :=-dades[i].y * sint + dades[i].z * cost;
- end;
- End;
-
- Procedure Roty(var dades:Estel);
- Var i : integer;
- Begin
- For i := 1 to 14 do
- Begin
- dades[i].x := dades[i].x * cost - dades[i].z * sint;
- dades[i].y := dades[i].y;
- dades[i].z := dades[i].x * sint + dades[i].z * cost;
- End;
- End;
-
- Procedure Rotz(var dades:estel);
- Var i : integer;
- Begin
- For i := 1 to 14 do
- Begin
- dades[i].x := dades[i].x * cost + dades[i].y * sint;
- dades[i].y := -dades[i].x * sint + dades[i].y * cost;
- dades[i].z := dades[i].z;
- End;
- End;
-
-
- {----------------------------------------------------------------------------}
-
- BEGIN
-
-
- Sentitx:=1;
- Sentity:=1;
- OrigeX:=160;
- OrigeY:=100;
- Valors(dades);
- ModoGrafico;
- PV:=CreaVirtual; {Destapar per a PV}
- PV2:=CreaVirtual;
- c:=16;
- For I:=0 to 199 do
- Begin
- linea(0,i,319,i,round(c),pv2);
- c:=c+0.075;
- End;
- fBorraPantalla(0,0);
- repeat
- WaitVR;
- CopiaPantalla(PV2,PV);
- Dibuixar( dades,1,pv,OrigeX,OrigeY);
- If ((OrigeX=80) or (OrigeX=240)) then
- sentitx:=sentitX*(-1);
- If ((Origey=80) or (Origey=120)) then
- sentity:=Sentity*(-1);
- origex:=origex+(sentitx);
- origey:=origey+(sentity);
- rotz(dades);
- rotx(dades);
- roty(dades);
- CopiaPantalla(PV,0);
- fBorraPantalla(0,PV);
- Until keypressed;
- FadeDown(10000,1,0); {Encara que no ve al cas.... :-) }
- {CopiaPantalla(PV,0);}
-
- Readln;
- {DestVirtual(PV);}
- ModoTexto;
-
- END.
-