These are the calculations used for the various 3D objects used in this Intro. For speed and size they are calculated once, and then written to a .BIN file wich produced (using Binobj) the file Sxhmata.OBJ const CCMsg : Array[-3..3] of string[44]= (' ... ... ... .. .. ... ... ', '..... ..... ..... ... ... ..... ..... ', '.. .. .. .. ....... .. .. .. ', '.. .. .. .. .. . .. .. .. .. ', '.. .. .. .. .. .. .. .. .. ', '..... ..... ..... .. .. ..... ..... ', ' ... ... ... .. .. ... ... '); Procedure CalcV1; Var z : ShortInt; i,l : Byte; S,c : Integer; begin l:=1; For z:=0 to 11 do begin For i:=0 to 12 do begin S:=round(sin(2*I*pi/13)*23); C:=round(Cos(2*I*Pi/13)*23); Sxhmata[0][l,3]:=z*5-24; Sxhmata[0][l,1]:=S; Sxhmata[0][l,2]:=C; inc(l); end; end; end; Procedure CalcV2; Var z : ShortInt; i,l : Byte; S,c : Integer; begin l:=1; For z:=0 to 7 do begin For i:=0 to 12 do begin S:=round(sin(2*I*pi/13)*(15-(Cos(2*(z+4)*Pi/12)*15))); C:=round(Cos(2*I*Pi/13)*(15-(Cos(2*(z+4)*Pi/12)*15))); Sxhmata[1][l,3]:=z*5-24; Sxhmata[1][l,1]:=S; Sxhmata[1][l,2]:=C; inc(l); end; end; For z:=8 to 11 do begin For i:=0 to 12 do begin S:=round(sin(2*I*pi/13)*((z-7)*(z-7))); C:=round(Cos(2*I*Pi/13)*((z-7)*(z-7))); Sxhmata[1][l,3]:=z*5-24; Sxhmata[1][l,1]:=S; Sxhmata[1][l,2]:=C; inc(l); end; end; end; Procedure CalcV3; Var z : ShortInt; i,l : Byte; S,c : Integer; begin l:=1; For z:=0 to 11 do begin For i:=0 to 12 do begin S:=round(sin(2*I*pi/13)*(Sin(2*Succ(z)*Pi/26)*30)); C:=round(Cos(2*I*Pi/13)*(Sin(2*Succ(z)*Pi/26)*30)); Sxhmata[2][l,3]:=Round(-Cos(2*Succ(z)*Pi/24)*28); Sxhmata[2][l,1]:=S; Sxhmata[2][l,2]:=C; inc(l); end; end; end; Procedure CalcV4; Var z : ShortInt; i,l : Byte; S,c : Integer; begin l:=1; For z:=0 to 11 do begin For i:=0 to 12 do begin S:=round(sin(2*I*pi/13)*(Sin(2*(z+8)*Pi/26)*28)); C:=round(Cos(2*I*Pi/13)*(Sin(2*(z+8)*Pi/26)*28)); Sxhmata[3][l,3]:=Round(-Cos(2*Succ(z)*Pi/24)*26); Sxhmata[3][l,1]:=S; Sxhmata[3][l,2]:=C; inc(l); end; end; end; Procedure CalcV5; Var z : ShortInt; i,l : Byte; S,c : Integer; begin l:=1; For z:=0 to 11 do begin For i:=0 to 12 do begin S:=round(sin(2*I*pi/13)*28); C:=round(Cos(2*I*Pi/13)*(Sin(2*Succ(z)*Pi/26)*30)); Sxhmata[4][l,3]:=((z-6)*4)+(i DIV 3); Sxhmata[4][l,1]:=S; Sxhmata[4][l,2]:=C; inc(l); end; end; end; Procedure CalcV6; Var x,y,z : ShortInt; i,l : Byte; S,c : Integer; begin l:=1; For x:=1 to 42 do For y:=-3 to 3 do IF CCMsg[y][x]='.' Then begin Sxhmata[5][l,3]:=-Round(Cos(2*(y+4)*pi/20)*20); Sxhmata[5][l,1]:=-Round((Sin(2*(x)*Pi/120)*40)*Sin(2*(y+20)*Pi/100))+20 ; { x*2 } Sxhmata[5][l,2]:=Round((Cos(2*(x)*Pi/120)*40)*Sin(2*(y+20)*Pi/100))-10 ; { y*2 } inc(l); end; end;