Home » Archimedes archive » Acorn User » AU 1995-05.adf » !StarInfo_StarInfo » Vibe/ColourCard/ColTri
Vibe/ColourCard/ColTri
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 1995-05.adf » !StarInfo_StarInfo |
Filename: | Vibe/ColourCard/ColTri |
Read OK: | ✔ |
File size: | 0557 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >ColTri 11REM by Jan Vibe 12REM (c) AU May 1995 20 30MODE107:OFF 40SYS "OS_SWINumberFromString",,"ColourTrans_SetGCOL" TO set_gcol% 50PROCCT(0,0,576,848,1152,0,&0000FF,&00FF00,&FF0000) 60END 70 80DEFPROCCT(SX1,SY1,SX2,SY2,SX3,SY3,C1%,C2%,C3%) 90LOCAL R1%,R2%,R3%,G1%,G2%,G3%,B1%,B2%,B3%,ML,K 100R1%=C1%AND&FF:G1%=(C1%AND&FF00)>>8:B1%=(C1%AND&FF0000)>>16 110R2%=C2%AND&FF:G2%=(C2%AND&FF00)>>8:B2%=(C2%AND&FF0000)>>16 120R3%=C3%AND&FF:G3%=(C3%AND&FF00)>>8:B3%=(C3%AND&FF0000)>>16 130ML=SQR((SX1-SX2)^2+(SY1-SY2)^2) 140K=SQR((SX2-SX3)^2+(SY2-SY3)^2):IF K>ML ML=K 150K=SQR((SX3-SX1)^2+(SY3-SY1)^2):IF K>ML ML=K 160PROCT(SX1,SY1,SX2,SY2,SX3,SY3) 170ENDPROC 180 190DEFPROCT(X1,Y1,X2,Y2,X3,Y3) 200LOCAL XA,YA,XB,YB,XC,YC,A 210A=ABS(X1*Y2+Y1*X3+Y3*X2-Y2*X3-Y1*X2-X1*Y3)/2 220IF A>100 THEN 230XA=(X1+X2)/2:XB=(X2+X3)/2:XC=(X3+X1)/2 240YA=(Y1+Y2)/2:YB=(Y2+Y3)/2:YC=(Y3+Y1)/2 250PROCT(X1,Y1,XA,YA,XC,YC):PROCT(XA,YA,X2,Y2,XB,YB) 260PROCT(XC,YC,XB,YB,X3,Y3):PROCT(XA,YA,XB,YB,XC,YC) 270ELSE 280PROCCOL(X1,Y1,X2,Y2,X3,Y3) 290ENDIF 300ENDPROC 310 320DEFPROCCOL(X1,Y1,X2,Y2,X3,Y3) 330LOCAL D1,D2,D3,DT,R,G,B 340CX=(X1+X2+X3)/3:CY=(Y1+Y2+Y3)/3 350D1=SQR((SX1-X1)^2+(SY1-Y1)^2) 360D2=SQR((SX2-X2)^2+(SY2-Y2)^2) 370D3=SQR((SX3-X3)^2+(SY3-Y3)^2) 380D1=1-(D1/ML):D2=1-(D2/ML):D3=1-(D3/ML) 390R=(D1*R1%+D2*R2%+D3*R3%)/256 400G=(D1*G1%+D2*G2%+D3*G3%)/256 410B=(D1*B1%+D2*B2%+D3*B3%)/256 420SYS set_gcol%,((R*&FF)<<8)+((G*&FF)<<16)+((B*&FF)<<24),,,&100,0 430MOVEX1,Y1:MOVEX2,Y2:PLOT85,X3,Y3 440ENDPROC
� >ColTri � by Jan Vibe � (c) AU May 1995 �107:� (Bș "OS_SWINumberFromString",,"ColourTrans_SetGCOL" � set_gcol% 23�CT(0,0,576,848,1152,0,&0000FF,&00FF00,&FF0000) <� F P-��CT(SX1,SY1,SX2,SY2,SX3,SY3,C1%,C2%,C3%) Z.� R1%,R2%,R3%,G1%,G2%,G3%,B1%,B2%,B3%,ML,K d8R1%=C1%�&FF:G1%=(C1%�&FF00)>>8:B1%=(C1%�&FF0000)>>16 n8R2%=C2%�&FF:G2%=(C2%�&FF00)>>8:B2%=(C2%�&FF0000)>>16 x8R3%=C3%�&FF:G3%=(C3%�&FF00)>>8:B3%=(C3%�&FF0000)>>16 �!ML=�((SX1-SX2)^2+(SY1-SY2)^2) �,K=�((SX2-SX3)^2+(SY2-SY3)^2):� K>ML ML=K �,K=�((SX3-SX1)^2+(SY3-SY1)^2):� K>ML ML=K ��T(SX1,SY1,SX2,SY2,SX3,SY3) �� � ���T(X1,Y1,X2,Y2,X3,Y3) �� XA,YA,XB,YB,XC,YC,A �.A=�(X1*Y2+Y1*X3+Y3*X2-Y2*X3-Y1*X2-X1*Y3)/2 � � A>100 � �*XA=(X1+X2)/2:XB=(X2+X3)/2:XC=(X3+X1)/2 �*YA=(Y1+Y2)/2:YB=(Y2+Y3)/2:YC=(Y3+Y1)/2 �/�T(X1,Y1,XA,YA,XC,YC):�T(XA,YA,X2,Y2,XB,YB) /�T(XC,YC,XB,YB,X3,Y3):�T(XA,YA,XB,YB,XC,YC) � �COL(X1,Y1,X2,Y2,X3,Y3) "� ,� 6 @��COL(X1,Y1,X2,Y2,X3,Y3) J� D1,D2,D3,DT,R,G,B T#CX=(X1+X2+X3)/3:CY=(Y1+Y2+Y3)/3 ^D1=�((SX1-X1)^2+(SY1-Y1)^2) hD2=�((SX2-X2)^2+(SY2-Y2)^2) rD3=�((SX3-X3)^2+(SY3-Y3)^2) |*D1=1-(D1/ML):D2=1-(D2/ML):D3=1-(D3/ML) � R=(D1*R1%+D2*R2%+D3*R3%)/256 � G=(D1*G1%+D2*G2%+D3*G3%)/256 � B=(D1*B1%+D2*B2%+D3*B3%)/256 �Bș set_gcol%,((R*&FF)<<8)+((G*&FF)<<16)+((B*&FF)<<24),,,&100,0 ��X1,Y1:�X2,Y2:�85,X3,Y3 �� �
00000000 0d 00 0a 11 f4 20 20 20 20 20 3e 43 6f 6c 54 72 |..... >ColTr| 00000010 69 0d 00 0b 12 f4 20 62 79 20 20 4a 61 6e 20 56 |i..... by Jan V| 00000020 69 62 65 0d 00 0c 15 f4 20 28 63 29 20 41 55 20 |ibe..... (c) AU | 00000030 4d 61 79 20 31 39 39 35 0d 00 14 04 0d 00 1e 0a |May 1995........| 00000040 eb 31 30 37 3a 87 0d 00 28 42 c8 99 20 22 4f 53 |.107:...(B.. "OS| 00000050 5f 53 57 49 4e 75 6d 62 65 72 46 72 6f 6d 53 74 |_SWINumberFromSt| 00000060 72 69 6e 67 22 2c 2c 22 43 6f 6c 6f 75 72 54 72 |ring",,"ColourTr| 00000070 61 6e 73 5f 53 65 74 47 43 4f 4c 22 20 b8 20 73 |ans_SetGCOL" . s| 00000080 65 74 5f 67 63 6f 6c 25 0d 00 32 33 f2 43 54 28 |et_gcol%..23.CT(| 00000090 30 2c 30 2c 35 37 36 2c 38 34 38 2c 31 31 35 32 |0,0,576,848,1152| 000000a0 2c 30 2c 26 30 30 30 30 46 46 2c 26 30 30 46 46 |,0,&0000FF,&00FF| 000000b0 30 30 2c 26 46 46 30 30 30 30 29 0d 00 3c 05 e0 |00,&FF0000)..<..| 000000c0 0d 00 46 04 0d 00 50 2d dd f2 43 54 28 53 58 31 |..F...P-..CT(SX1| 000000d0 2c 53 59 31 2c 53 58 32 2c 53 59 32 2c 53 58 33 |,SY1,SX2,SY2,SX3| 000000e0 2c 53 59 33 2c 43 31 25 2c 43 32 25 2c 43 33 25 |,SY3,C1%,C2%,C3%| 000000f0 29 0d 00 5a 2e ea 20 52 31 25 2c 52 32 25 2c 52 |)..Z.. R1%,R2%,R| 00000100 33 25 2c 47 31 25 2c 47 32 25 2c 47 33 25 2c 42 |3%,G1%,G2%,G3%,B| 00000110 31 25 2c 42 32 25 2c 42 33 25 2c 4d 4c 2c 4b 0d |1%,B2%,B3%,ML,K.| 00000120 00 64 38 52 31 25 3d 43 31 25 80 26 46 46 3a 47 |.d8R1%=C1%.&FF:G| 00000130 31 25 3d 28 43 31 25 80 26 46 46 30 30 29 3e 3e |1%=(C1%.&FF00)>>| 00000140 38 3a 42 31 25 3d 28 43 31 25 80 26 46 46 30 30 |8:B1%=(C1%.&FF00| 00000150 30 30 29 3e 3e 31 36 0d 00 6e 38 52 32 25 3d 43 |00)>>16..n8R2%=C| 00000160 32 25 80 26 46 46 3a 47 32 25 3d 28 43 32 25 80 |2%.&FF:G2%=(C2%.| 00000170 26 46 46 30 30 29 3e 3e 38 3a 42 32 25 3d 28 43 |&FF00)>>8:B2%=(C| 00000180 32 25 80 26 46 46 30 30 30 30 29 3e 3e 31 36 0d |2%.&FF0000)>>16.| 00000190 00 78 38 52 33 25 3d 43 33 25 80 26 46 46 3a 47 |.x8R3%=C3%.&FF:G| 000001a0 33 25 3d 28 43 33 25 80 26 46 46 30 30 29 3e 3e |3%=(C3%.&FF00)>>| 000001b0 38 3a 42 33 25 3d 28 43 33 25 80 26 46 46 30 30 |8:B3%=(C3%.&FF00| 000001c0 30 30 29 3e 3e 31 36 0d 00 82 21 4d 4c 3d b6 28 |00)>>16...!ML=.(| 000001d0 28 53 58 31 2d 53 58 32 29 5e 32 2b 28 53 59 31 |(SX1-SX2)^2+(SY1| 000001e0 2d 53 59 32 29 5e 32 29 0d 00 8c 2c 4b 3d b6 28 |-SY2)^2)...,K=.(| 000001f0 28 53 58 32 2d 53 58 33 29 5e 32 2b 28 53 59 32 |(SX2-SX3)^2+(SY2| 00000200 2d 53 59 33 29 5e 32 29 3a e7 20 4b 3e 4d 4c 20 |-SY3)^2):. K>ML | 00000210 4d 4c 3d 4b 0d 00 96 2c 4b 3d b6 28 28 53 58 33 |ML=K...,K=.((SX3| 00000220 2d 53 58 31 29 5e 32 2b 28 53 59 33 2d 53 59 31 |-SX1)^2+(SY3-SY1| 00000230 29 5e 32 29 3a e7 20 4b 3e 4d 4c 20 4d 4c 3d 4b |)^2):. K>ML ML=K| 00000240 0d 00 a0 1f f2 54 28 53 58 31 2c 53 59 31 2c 53 |.....T(SX1,SY1,S| 00000250 58 32 2c 53 59 32 2c 53 58 33 2c 53 59 33 29 0d |X2,SY2,SX3,SY3).| 00000260 00 aa 05 e1 0d 00 b4 04 0d 00 be 1a dd f2 54 28 |..............T(| 00000270 58 31 2c 59 31 2c 58 32 2c 59 32 2c 58 33 2c 59 |X1,Y1,X2,Y2,X3,Y| 00000280 33 29 0d 00 c8 19 ea 20 58 41 2c 59 41 2c 58 42 |3)..... XA,YA,XB| 00000290 2c 59 42 2c 58 43 2c 59 43 2c 41 0d 00 d2 2e 41 |,YB,XC,YC,A....A| 000002a0 3d 94 28 58 31 2a 59 32 2b 59 31 2a 58 33 2b 59 |=.(X1*Y2+Y1*X3+Y| 000002b0 33 2a 58 32 2d 59 32 2a 58 33 2d 59 31 2a 58 32 |3*X2-Y2*X3-Y1*X2| 000002c0 2d 58 31 2a 59 33 29 2f 32 0d 00 dc 0d e7 20 41 |-X1*Y3)/2..... A| 000002d0 3e 31 30 30 20 8c 0d 00 e6 2a 58 41 3d 28 58 31 |>100 ....*XA=(X1| 000002e0 2b 58 32 29 2f 32 3a 58 42 3d 28 58 32 2b 58 33 |+X2)/2:XB=(X2+X3| 000002f0 29 2f 32 3a 58 43 3d 28 58 33 2b 58 31 29 2f 32 |)/2:XC=(X3+X1)/2| 00000300 0d 00 f0 2a 59 41 3d 28 59 31 2b 59 32 29 2f 32 |...*YA=(Y1+Y2)/2| 00000310 3a 59 42 3d 28 59 32 2b 59 33 29 2f 32 3a 59 43 |:YB=(Y2+Y3)/2:YC| 00000320 3d 28 59 33 2b 59 31 29 2f 32 0d 00 fa 2f f2 54 |=(Y3+Y1)/2.../.T| 00000330 28 58 31 2c 59 31 2c 58 41 2c 59 41 2c 58 43 2c |(X1,Y1,XA,YA,XC,| 00000340 59 43 29 3a f2 54 28 58 41 2c 59 41 2c 58 32 2c |YC):.T(XA,YA,X2,| 00000350 59 32 2c 58 42 2c 59 42 29 0d 01 04 2f f2 54 28 |Y2,XB,YB).../.T(| 00000360 58 43 2c 59 43 2c 58 42 2c 59 42 2c 58 33 2c 59 |XC,YC,XB,YB,X3,Y| 00000370 33 29 3a f2 54 28 58 41 2c 59 41 2c 58 42 2c 59 |3):.T(XA,YA,XB,Y| 00000380 42 2c 58 43 2c 59 43 29 0d 01 0e 05 cc 0d 01 18 |B,XC,YC)........| 00000390 1b f2 43 4f 4c 28 58 31 2c 59 31 2c 58 32 2c 59 |..COL(X1,Y1,X2,Y| 000003a0 32 2c 58 33 2c 59 33 29 0d 01 22 05 cd 0d 01 2c |2,X3,Y3).."....,| 000003b0 05 e1 0d 01 36 04 0d 01 40 1c dd f2 43 4f 4c 28 |....6...@...COL(| 000003c0 58 31 2c 59 31 2c 58 32 2c 59 32 2c 58 33 2c 59 |X1,Y1,X2,Y2,X3,Y| 000003d0 33 29 0d 01 4a 17 ea 20 44 31 2c 44 32 2c 44 33 |3)..J.. D1,D2,D3| 000003e0 2c 44 54 2c 52 2c 47 2c 42 0d 01 54 23 43 58 3d |,DT,R,G,B..T#CX=| 000003f0 28 58 31 2b 58 32 2b 58 33 29 2f 33 3a 43 59 3d |(X1+X2+X3)/3:CY=| 00000400 28 59 31 2b 59 32 2b 59 33 29 2f 33 0d 01 5e 1f |(Y1+Y2+Y3)/3..^.| 00000410 44 31 3d b6 28 28 53 58 31 2d 58 31 29 5e 32 2b |D1=.((SX1-X1)^2+| 00000420 28 53 59 31 2d 59 31 29 5e 32 29 0d 01 68 1f 44 |(SY1-Y1)^2)..h.D| 00000430 32 3d b6 28 28 53 58 32 2d 58 32 29 5e 32 2b 28 |2=.((SX2-X2)^2+(| 00000440 53 59 32 2d 59 32 29 5e 32 29 0d 01 72 1f 44 33 |SY2-Y2)^2)..r.D3| 00000450 3d b6 28 28 53 58 33 2d 58 33 29 5e 32 2b 28 53 |=.((SX3-X3)^2+(S| 00000460 59 33 2d 59 33 29 5e 32 29 0d 01 7c 2a 44 31 3d |Y3-Y3)^2)..|*D1=| 00000470 31 2d 28 44 31 2f 4d 4c 29 3a 44 32 3d 31 2d 28 |1-(D1/ML):D2=1-(| 00000480 44 32 2f 4d 4c 29 3a 44 33 3d 31 2d 28 44 33 2f |D2/ML):D3=1-(D3/| 00000490 4d 4c 29 0d 01 86 20 52 3d 28 44 31 2a 52 31 25 |ML)... R=(D1*R1%| 000004a0 2b 44 32 2a 52 32 25 2b 44 33 2a 52 33 25 29 2f |+D2*R2%+D3*R3%)/| 000004b0 32 35 36 0d 01 90 20 47 3d 28 44 31 2a 47 31 25 |256... G=(D1*G1%| 000004c0 2b 44 32 2a 47 32 25 2b 44 33 2a 47 33 25 29 2f |+D2*G2%+D3*G3%)/| 000004d0 32 35 36 0d 01 9a 20 42 3d 28 44 31 2a 42 31 25 |256... B=(D1*B1%| 000004e0 2b 44 32 2a 42 32 25 2b 44 33 2a 42 33 25 29 2f |+D2*B2%+D3*B3%)/| 000004f0 32 35 36 0d 01 a4 42 c8 99 20 73 65 74 5f 67 63 |256...B.. set_gc| 00000500 6f 6c 25 2c 28 28 52 2a 26 46 46 29 3c 3c 38 29 |ol%,((R*&FF)<<8)| 00000510 2b 28 28 47 2a 26 46 46 29 3c 3c 31 36 29 2b 28 |+((G*&FF)<<16)+(| 00000520 28 42 2a 26 46 46 29 3c 3c 32 34 29 2c 2c 2c 26 |(B*&FF)<<24),,,&| 00000530 31 30 30 2c 30 0d 01 ae 1b ec 58 31 2c 59 31 3a |100,0.....X1,Y1:| 00000540 ec 58 32 2c 59 32 3a f0 38 35 2c 58 33 2c 59 33 |.X2,Y2:.85,X3,Y3| 00000550 0d 01 b8 05 e1 0d ff |.......| 00000557