program backtotheworld; uses crt,graph; const cube:array[1..12,1..2,1..3] of integer = ( ((-10,-10,-20),(10,-10,-20)), ((-10,-10,-20),(-10,10,-20)), ((-10,10,-20),(10,10,-20)), ((10,-10,-20),(10,10,-20)), ((-10,-10,10),(10,-10,10)), ((-10,-10,10),(-10,10,10)), ((-10,10,10),(10,10,10)), ((10,-10,10),(10,10,10)), ((-10,-10,10),(-10,-10,-20)), ((-10,10,10),(-10,10,-20)), ((10,10,10),(10,10,-20)), ((10,-10,10),(10,-10,-20)) ); var gm,gd,i,i1,r,b:integer; fov:integer; cube1:array[1..12,1..2,1..2] of integer; begin gd:=detect;initgraph(gd,gm,'c:\bp\bgi'); fov:=10; repeat for r:=1 to 2 do begin for b:=1 to 12 do begin cube1[b,r,1]:=cube[b,r,1]*fov div cube[b,r,3]+320; cube1[b,r,2]:=cube[b,r,2]*fov div cube[b,r,3]+240; end; end; setcolor(0); bar(0,0,640,480); setcolor(1); r:=1; for b:=1 to 4 do begin line(cube1[b,r,1],cube1[b,r,2],cube1[b,r+1,1],cube1[b,r+1,2]); end; for b:=5 to 8 do begin line(cube1[b,r,1],cube1[b,r,2],cube1[b,r+1,1],cube1[b,r+1,2]); end; for b:=9 to 12 do begin line(cube1[b,r,1],cube1[b,r,2],cube1[b,r+1,1],cube1[b,r+1,2]); end; for r:=1 to 2 do begin for b:=1 to 12 do begin putpixel(cube1[b,r,1],cube1[b,r,2],5); end; end; delay(60000); until keypressed; end.