Posted By: Marek (Mark ) on board 'CZgraphics' Title: 3D in pascal, little&fast Date: Wed Oct 10 20:19:39 1997 WWW-Info: posted from boco.fee.vutbr.cz (147.229.9.11) Nazdar decka ! Ja vim, ze uz vsichni umite rotovat 3D v pascalu, ale pro ty ostatni je tu neco starsiho z me dilny... Doporucuji stahnout z WeWeWecka lijany... Const p = 72; range = 0.01; d = $3C9; Var x,y,z : Array[1..100] Of Real; o : Array[1..100] Of Word; sx,sy,sz,cx,cy,cz : Array[0..255] Of Real; a,b : Byte; pf,t1,t2 : Real; Begin For a:=1 To 5 Do For b:=(a-1)*20+1 To 20*a Do Begin x[b]:=50*Sin(b/10*pi); y[b]:=a*12-30; z[b]:=50*Cos(b/10*pi); End; Asm mov ax,13h int 10h End; For a:=0 To 255 Do Begin Port[d-1]:=a;Port[d]:=0;Port[d]:=32*a Div p;Port[d]:=0; pf:=a*pi/128;t1:=Range*(1+Sin(pf));t2:=Range*(1+Cos(pf)); sx[a]:=Sin(t1);cx[a]:=Cos(t1);sy[a]:=Sin(t2);cy[a]:=Cos(t2); t2:=Range*2-t1;sz[a]:=Sin(t2);cz[a]:=Cos(t2); End; Randomize;b:=Random(256); Repeat For a:=1 To 100 Do Begin mem[SegA000:o[a]]:=0; t1:=y[a];y[a]:=t1*cx[b]-z[a]*sx[b];z[a]:=t1*sx[b]+z[a]*cx[b]; t1:=x[a];x[a]:=t1*cy[b]-z[a]*sy[b];z[a]:=t1*sy[b]+z[a]*cy[b]; t1:=x[a];x[a]:=t1*cz[b]-y[a]*sz[b];y[a]:=t1*sz[b]+y[a]*cz[b]; Pf:=p/(p+z[a]); o[a]:=32160+Round(Pf*x[a])-320*Round(Pf*y[a]); mem[SegA000:o[a]]:=Round(p-z[a]); End; inc(b); Until Port[$60]<128; Asm mov ax,3 int 10h End; End. Caute Mark