Home » Archimedes archive » Acorn User » AU 1993-06.adf » !3DGraphic_3DGraphic » PerspDemo
PerspDemo
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1993-06.adf » !3DGraphic_3DGraphic |
Filename: | PerspDemo |
Read OK: | ✔ |
File size: | 03BE bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >PerspDemo 20REM By Dave Acton 30REM For 32-bit machines 40REM (c) BAU June 1993 50: 60MODE 0 70OFF 80ORIGIN 640,512 90PROCinit 100bank=1 110MOUSE TO 0,0 120REPEAT 130 FOR ang=0 TO 359 STEP 5 140 WAIT 150 SYS "OS_Byte",112,bank 160 bank=3-bank 170 SYS "OS_Byte",113,bank 180 CLS 190 MOUSE mx,my,mb 200 zoff=30+my/10 210 IF zoff=0 zoff=1 220 d=mx+800 230 PRINT"d=";d'"zoff=";zoff 240 PROCshow(ang) 250 NEXT 260UNTIL FALSE 270END 280: 290DEF PROCinit 300DIM vert(7,2) 310FOR v=0 TO 7 320 vert(v,0)=(v AND 1)-0.5 330 vert(v,1)=((v AND 2)>>1)-0.5 340 vert(v,2)=((v AND 4)>>2)-0.5 350NEXT 360ENDPROC 370: 380DEF PROCshow(ang) 390FOR v=0 TO 3 400 PROCdraw(v,v+4,ang) 410 PROCdraw(2*v,2*v+1,ang) 420NEXT 430PROCdraw(0,2,ang) 440PROCdraw(1,3,ang) 450PROCdraw(4,6,ang) 460PROCdraw(5,7,ang) 470ENDPROC 480: 490DEF PROCdraw(v0,v1,ang) 500PROCplot(4,v0,ang) 510PROCplot(5,v1,ang) 520ENDPROC 530: 540DEF PROCplot(code,v,ang) 550LOCAL x2,y2,z2 560x2=vert(v,0)*COSRAD(ang)+vert(v,2)*SINRAD(ang) 570y2=vert(v,1) 580z2=-vert(v,0)*SINRAD(ang)+vert(v,2)*COSRAD(ang) 590PLOT code,d*x2/(z2+zoff),d*y2/(z2+zoff) 600ENDPROC
� >PerspDemo � By Dave Acton � For 32-bit machines (� (c) BAU June 1993 2: <� 0 F� Pȑ 640,512 Z �init d bank=1 nȗ � 0,0 x� � � ang=0 � 359 � 5 � Ȗ � ș "OS_Byte",112,bank � bank=3-bank � ș "OS_Byte",113,bank � � � ȗ mx,my,mb � zoff=30+my/10 � � zoff=0 zoff=1 � d=mx+800 � �"d=";d'"zoff=";zoff � �show(ang) � � � � � : "� �init ,� vert(7,2) 6 � v=0 � 7 @ vert(v,0)=(v � 1)-0.5 J vert(v,1)=((v � 2)>>1)-0.5 T vert(v,2)=((v � 4)>>2)-0.5 ^� h� r: |� �show(ang) � � v=0 � 3 � �draw(v,v+4,ang) � �draw(2*v,2*v+1,ang) �� ��draw(0,2,ang) ��draw(1,3,ang) ��draw(4,6,ang) ��draw(5,7,ang) �� �: �� �draw(v0,v1,ang) ��plot(4,v0,ang) ��plot(5,v1,ang) � : � �plot(code,v,ang) &� x2,y2,z2 0*x2=vert(v,0)*��(ang)+vert(v,2)*��(ang) :y2=vert(v,1) D+z2=-vert(v,0)*��(ang)+vert(v,2)*��(ang) N(� code,d*x2/(z2+zoff),d*y2/(z2+zoff) X� �
00000000 0d 00 0a 14 f4 20 20 20 20 20 3e 50 65 72 73 70 |..... >Persp| 00000010 44 65 6d 6f 0d 00 14 14 f4 20 42 79 20 20 44 61 |Demo..... By Da| 00000020 76 65 20 41 63 74 6f 6e 0d 00 1e 19 f4 20 46 6f |ve Acton..... Fo| 00000030 72 20 33 32 2d 62 69 74 20 6d 61 63 68 69 6e 65 |r 32-bit machine| 00000040 73 0d 00 28 17 f4 20 28 63 29 20 42 41 55 20 4a |s..(.. (c) BAU J| 00000050 75 6e 65 20 31 39 39 33 0d 00 32 05 3a 0d 00 3c |une 1993..2.:..<| 00000060 07 eb 20 30 0d 00 46 05 87 0d 00 50 0e c8 91 20 |.. 0..F....P... | 00000070 36 34 30 2c 35 31 32 0d 00 5a 09 f2 69 6e 69 74 |640,512..Z..init| 00000080 0d 00 64 0a 62 61 6e 6b 3d 31 0d 00 6e 0c c8 97 |..d.bank=1..n...| 00000090 20 b8 20 30 2c 30 0d 00 78 05 f5 0d 00 82 16 20 | . 0,0..x...... | 000000a0 e3 20 61 6e 67 3d 30 20 b8 20 33 35 39 20 88 20 |. ang=0 . 359 . | 000000b0 35 0d 00 8c 08 20 20 c8 96 0d 00 96 1b 20 20 c8 |5.... ...... .| 000000c0 99 20 22 4f 53 5f 42 79 74 65 22 2c 31 31 32 2c |. "OS_Byte",112,| 000000d0 62 61 6e 6b 0d 00 a0 11 20 20 62 61 6e 6b 3d 33 |bank.... bank=3| 000000e0 2d 62 61 6e 6b 0d 00 aa 1b 20 20 c8 99 20 22 4f |-bank.... .. "O| 000000f0 53 5f 42 79 74 65 22 2c 31 31 33 2c 62 61 6e 6b |S_Byte",113,bank| 00000100 0d 00 b4 07 20 20 db 0d 00 be 11 20 20 c8 97 20 |.... ..... .. | 00000110 6d 78 2c 6d 79 2c 6d 62 0d 00 c8 13 20 20 7a 6f |mx,my,mb.... zo| 00000120 66 66 3d 33 30 2b 6d 79 2f 31 30 0d 00 d2 15 20 |ff=30+my/10.... | 00000130 20 e7 20 7a 6f 66 66 3d 30 20 7a 6f 66 66 3d 31 | . zoff=0 zoff=1| 00000140 0d 00 dc 0e 20 20 64 3d 6d 78 2b 38 30 30 0d 00 |.... d=mx+800..| 00000150 e6 1a 20 20 f1 22 64 3d 22 3b 64 27 22 7a 6f 66 |.. ."d=";d'"zof| 00000160 66 3d 22 3b 7a 6f 66 66 0d 00 f0 10 20 20 f2 73 |f=";zoff.... .s| 00000170 68 6f 77 28 61 6e 67 29 0d 00 fa 06 20 ed 0d 01 |how(ang).... ...| 00000180 04 07 fd 20 a3 0d 01 0e 05 e0 0d 01 18 05 3a 0d |... ..........:.| 00000190 01 22 0b dd 20 f2 69 6e 69 74 0d 01 2c 0f de 20 |.".. .init..,.. | 000001a0 76 65 72 74 28 37 2c 32 29 0d 01 36 0d e3 20 76 |vert(7,2)..6.. v| 000001b0 3d 30 20 b8 20 37 0d 01 40 1a 20 76 65 72 74 28 |=0 . 7..@. vert(| 000001c0 76 2c 30 29 3d 28 76 20 80 20 31 29 2d 30 2e 35 |v,0)=(v . 1)-0.5| 000001d0 0d 01 4a 1f 20 76 65 72 74 28 76 2c 31 29 3d 28 |..J. vert(v,1)=(| 000001e0 28 76 20 80 20 32 29 3e 3e 31 29 2d 30 2e 35 0d |(v . 2)>>1)-0.5.| 000001f0 01 54 1f 20 76 65 72 74 28 76 2c 32 29 3d 28 28 |.T. vert(v,2)=((| 00000200 76 20 80 20 34 29 3e 3e 32 29 2d 30 2e 35 0d 01 |v . 4)>>2)-0.5..| 00000210 5e 05 ed 0d 01 68 05 e1 0d 01 72 05 3a 0d 01 7c |^....h....r.:..|| 00000220 10 dd 20 f2 73 68 6f 77 28 61 6e 67 29 0d 01 86 |.. .show(ang)...| 00000230 0d e3 20 76 3d 30 20 b8 20 33 0d 01 90 15 20 f2 |.. v=0 . 3.... .| 00000240 64 72 61 77 28 76 2c 76 2b 34 2c 61 6e 67 29 0d |draw(v,v+4,ang).| 00000250 01 9a 19 20 f2 64 72 61 77 28 32 2a 76 2c 32 2a |... .draw(2*v,2*| 00000260 76 2b 31 2c 61 6e 67 29 0d 01 a4 05 ed 0d 01 ae |v+1,ang)........| 00000270 12 f2 64 72 61 77 28 30 2c 32 2c 61 6e 67 29 0d |..draw(0,2,ang).| 00000280 01 b8 12 f2 64 72 61 77 28 31 2c 33 2c 61 6e 67 |....draw(1,3,ang| 00000290 29 0d 01 c2 12 f2 64 72 61 77 28 34 2c 36 2c 61 |).....draw(4,6,a| 000002a0 6e 67 29 0d 01 cc 12 f2 64 72 61 77 28 35 2c 37 |ng).....draw(5,7| 000002b0 2c 61 6e 67 29 0d 01 d6 05 e1 0d 01 e0 05 3a 0d |,ang).........:.| 000002c0 01 ea 16 dd 20 f2 64 72 61 77 28 76 30 2c 76 31 |.... .draw(v0,v1| 000002d0 2c 61 6e 67 29 0d 01 f4 13 f2 70 6c 6f 74 28 34 |,ang).....plot(4| 000002e0 2c 76 30 2c 61 6e 67 29 0d 01 fe 13 f2 70 6c 6f |,v0,ang).....plo| 000002f0 74 28 35 2c 76 31 2c 61 6e 67 29 0d 02 08 05 e1 |t(5,v1,ang).....| 00000300 0d 02 12 05 3a 0d 02 1c 17 dd 20 f2 70 6c 6f 74 |....:..... .plot| 00000310 28 63 6f 64 65 2c 76 2c 61 6e 67 29 0d 02 26 0e |(code,v,ang)..&.| 00000320 ea 20 78 32 2c 79 32 2c 7a 32 0d 02 30 2a 78 32 |. x2,y2,z2..0*x2| 00000330 3d 76 65 72 74 28 76 2c 30 29 2a 9b b2 28 61 6e |=vert(v,0)*..(an| 00000340 67 29 2b 76 65 72 74 28 76 2c 32 29 2a b5 b2 28 |g)+vert(v,2)*..(| 00000350 61 6e 67 29 0d 02 3a 10 79 32 3d 76 65 72 74 28 |ang)..:.y2=vert(| 00000360 76 2c 31 29 0d 02 44 2b 7a 32 3d 2d 76 65 72 74 |v,1)..D+z2=-vert| 00000370 28 76 2c 30 29 2a b5 b2 28 61 6e 67 29 2b 76 65 |(v,0)*..(ang)+ve| 00000380 72 74 28 76 2c 32 29 2a 9b b2 28 61 6e 67 29 0d |rt(v,2)*..(ang).| 00000390 02 4e 28 f0 20 63 6f 64 65 2c 64 2a 78 32 2f 28 |.N(. code,d*x2/(| 000003a0 7a 32 2b 7a 6f 66 66 29 2c 64 2a 79 32 2f 28 7a |z2+zoff),d*y2/(z| 000003b0 32 2b 7a 6f 66 66 29 0d 02 58 05 e1 0d ff |2+zoff)..X....| 000003be