home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Interdit
/
pc-interdit.iso
/
graph
/
3d_verre.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-10-17
|
3KB
|
83 lines
Uses Crt,ModeXLib,var_3d;
Const
worldlen=8*3; {tableau des points }
Worldconst:Array[0..worldlen-1] of Integer =
(-200,-200,-200,
-200,-200,200,
-200,200,-200,
-200,200,200,
200,-200,-200,
200,-200,200,
200,200,-200,
200,200,200);
surfclen=38; {tableau des faces }
surfcconst:Array[0..surfclen-1] of Word=
(01,4, 0,2,6,4,
02,4, 0,1,3,2,
04,4, 4,6,7,5,
08,4, 1,5,7,3,
16,4, 2,3,7,6,
32,4, 0,4,5,1,0,0);
Var
i,j:Word;
Procedure Verre_Pal;
{prépare la palette pour la représentation d'objets en verre }
Begin
FillChar(Palette[3],765,63); {d'abord tout en blanc }
For i:=1 to 255 do Begin {définit 255 mélanges}
If i and 1 = 1 Then Dec(Palette[i*3],16);
If i and 2 = 2 Then Dec(Palette[i*3+1],16);
If i and 4 = 4 Then Dec(Palette[i*3+2],16);
If i and 8 = 8 Then Begin
Dec(Palette[i*3],16);
Dec(Palette[i*3+1],16);
End;
If i and 16 = 16 Then Begin
Dec(Palette[i*3],16);
Dec(Palette[i*3+2],16);
End;
If i and 32 = 32 Then Begin
Dec(Palette[i*3+1],16);
Dec(Palette[i*3+2],16);
End;
End;
SetPal;
End;
procedure drawworld;external; {représente l'espace des objets dans la page d'écran courante }
{$l c:\edition\prog\fr\asm\3dasm.obj}
{$l c:\edition\prog\fr\asm\poly.obj}
{$l c:\edition\prog\fr\asm\bres.obj}
{$l c:\edition\prog\fr\asm\racine.obj}
Begin
vz:=1000; {profondeur de l'objet }
vpage:=0; {commence par la page 0}
init_modex; {active le mode X }
Verre_Pal;
rotx:=0; {valeurs initiales pour la rotation }
roty:=0;
rotz:=0;
remplir:=true; {active le remplissage des faces }
su_sort:=false; {pas de tri des surfaces }
su_cacher:=false; {pas de traitement des faces cachées }
verre:=true; {objet en verre }
repeat
clrx($0f); {efface l'écran }
DrawWorld; {dessine l'espace }
switch; {active l'écran préparé }
WaitRetrace; {attend le prochain retour de balayage }
Inc(rotx); {poursuit la rotation ... }
If rotx=120 Then rotx:=0;
Inc(rotz);
If rotz=120 Then rotz:=0;
inc(roty);
if roty=120 Then roty:=0;
Until KeyPressed; { ... jusqu'à ce qu'on frappe une touche }
TextMode(3);
End.