Ein schneller Drawline-Algorithmus
Im folgenden wird eine Möglichkeit vorgestellt, schnell und einfach eine Strecke, die durch ihre beiden Endpunkte gegeben ist, zu plotten. Als Ausgabegerät können Bildschirm, Drucker oder Plotter eingesetzt werden.
Nachdruck aus 64'er 4/84, S. 65.
(Michael Bauer)100 rem drawline 110 rem diese routine berechnet die koordinaten 120 rem der punkte auf einer strecke, die durch 130 rem die endpunkte gegeben ist. mit einer ge- 140 rem eigneten 'setpoint'-routine kann der 150 rem bildschirm oder ein plotter angesteuert 160 rem werden. die grenzen der werte fuer x und 170 rem y entsprechen den werten fuer den hi-res 180 rem bildschirm des commodore 64. 190 rem 200 rem das original dieses programmes stammt von 210 rem mike higgins erschienen in byte 1981 im 220 rem heft 8 auf den seiten 414 - 416 230 rem 240 rem 250 input"koordinaten 1. punkt";x0,y0 260 ifx0>319ory0>199then250 270 ifx0<0ory0<0then250 280 input"koordinaten 2. punkt";x1,y1 290 ifx1>319ory1>199then280 300 ifx1<0ory1<0then280 310 rem setpar 320 s1=0:s2=1:a1=1:a2=0 330 ifx1=>x0thend1=x1-x0:goto360 340 a1=-1 350 d1=x0-x1 360 ify1=>y0thend2=y1-y0:goto390 370 d2=y0-y1 380 s2=-1 390 ifd1=>d2then470 400 n1=d1:rem vertausche d1 und d2 410 d1=d2 420 d2=n1 430 s1=a1 440 a1=0 450 a2=s2 460 s2=0 470 d3=d1/2 480 n1=1:rem schleifenzaehler 490 goto580:rem plotte ursprungspunkt 500 x0=x0+a1 510 y0=y0+a2 520 d3=d3+d2 530 n1=n1+1 540 ifd3<=d1then580 550 d3=d3-d1 560 x0=x0+s1 570 y0=y0+s2 580 printx0,y0 590 ifd1=>n1then500 600 end
PROGRAMM : DRAW C000 C34B ----------------------------------- C000 : 4C 2D C0 4C 44 C0 4C 5B CF C008 : C0 4C 78 C0 4C 92 C0 4C 19 C010 : 95 C0 4C 80 C1 4C 83 C1 38 C018 : 4C A8 C1 4C AB C1 4C CE 4A C020 : C1 4C D1 C1 4C 60 C1 4C 1B C028 : 48 C1 4C 70 C1 AD 11 D0 E1 C030 : 8D 5B C3 AD 18 D0 8D 5C 08 C038 : C3 A9 3B 8D 11 D0 A9 18 BF C040 : 8D 18 D0 60 A0 00 A9 20 0A C048 : 84 FD 85 FE 98 91 FD C8 AC C050 : D0 FB E6 FE A5 FE C9 40 B1 C058 : D0 F2 60 20 FD AE 20 9E D0 C060 : B7 A0 00 A9 04 84 FD 85 04 C068 : FE 8A 91 FD C8 D0 FB E6 A0 C070 : FE A5 FE C9 08 D0 F2 60 CD C078 : A0 00 A9 20 84 FD 85 FE D3 C080 : B1 FD 49 FF 91 FD C8 D0 50 C088 : F7 E6 FE A5 FE C9 40 D0 47 C090 : EF 60 A9 00 2C A9 80 85 37 C098 : 97 20 FC C0 B0 F3 8A 4A 00 C0A0 : 4A 4A A8 B9 2F C1 8D 57 56 C0A8 : C3 B9 16 C1 8D 58 C3 8A C5 C0B0 : 29 07 18 6D 57 C3 8D 57 89 C0B8 : C3 A5 14 29 F8 8D 59 C3 61 C0C0 : 18 A9 00 6D 57 C3 85 FD 00 C0C8 : A9 20 6D 58 C3 85 FE 18 7C C0D0 : A5 FD 6D 59 C3 85 FD A5 A6 C0D8 : FE 65 15 85 FE A5 14 29 3F C0E0 : 07 49 07 AA A9 01 CA 30 D1 C0E8 : 03 0A D0 FA A0 00 24 97 4D C0F0 : 10 05 49 FF 31 FD 2C 11 AB C0F8 : FD 91 FD 60 20 FD AE 20 36 C100 : EB B7 E0 C8 B0 0C A5 15 44 C108 : C9 01 90 07 D0 04 A4 14 3F C110 : C0 40 60 A4 14 60 00 01 E3 C118 : 02 03 05 06 07 08 0A 0B 8D C120 : 0C 0D 0F 10 11 12 14 15 95 C128 : 16 17 19 1A 1B 1C 1E 00 5F C130 : 40 80 C0 00 40 80 C0 00 EC C138 : 40 80 C0 00 40 80 C0 00 F4 C140 : 40 80 C0 00 40 80 C0 00 FC C148 : 20 FD AE 20 D4 E1 A2 00 FD C150 : A0 40 A9 00 85 FD A9 20 AA C158 : 85 FE A9 FD 20 D8 FF 60 10 C160 : 20 FD AE 20 D4 E1 A9 61 F4 C168 : 85 B9 A9 00 20 D5 FF 60 A6 C170 : AD 5B C3 8D 11 D0 AD 5C 74 C178 : C3 8D 18 D0 20 44 E5 60 9E C180 : A9 00 2C A9 80 85 97 20 3C C188 : FD AE 20 9E B7 E0 C8 B0 BF C190 : EE 8E 4B C3 86 FD A0 3F 6A C198 : 8C 4C C3 A0 01 8C 4D C3 80 C1A0 : 88 84 15 84 14 4C FA C1 53 C1A8 : A9 00 2C A9 80 85 97 20 64 C1B0 : FD AE 20 8A AD 20 F7 B7 89 C1B8 : 20 08 C1 B0 C2 8D 4D C3 B8 C1C0 : 8C 4C C3 A2 C7 86 FD A0 A1 C1C8 : 00 8C 4B C3 F0 D7 A9 00 CE C1D0 : 2C A9 80 85 97 20 FC C0 92 C1D8 : B0 E1 8E 4B C3 8D 52 C3 FF C1E0 : 8C 51 C3 20 FC C0 B0 D3 4A C1E8 : 86 FD 8C 4C C3 AC 51 C3 88 C1F0 : 84 14 8D 4D C3 AD 52 C3 06 C1F8 : 85 15 A0 01 8C 56 C3 8C F4 C200 : 53 C3 8C 51 C3 88 8C 52 D9 C208 : C3 8C 55 C3 8C 54 C3 88 6B C210 : AD 4D C3 C5 15 90 09 D0 A9 C218 : 1E AD 4C C3 C5 14 B0 17 86 C220 : 38 A5 14 ED 4C C3 8D 4F A5 C228 : C3 A5 15 ED 4D C3 8D 50 8B C230 : C3 8C 56 C3 4C 48 C2 38 CA C238 : AD 4C C3 E5 14 8D 4F C3 2B C240 : AD 4D C3 E5 15 8D 50 C3 C8 C248 : A5 FD CD 4B C3 B0 0F 38 37 C250 : AD 4B C3 E5 FD 8D 4E C3 5D C258 : 8C 53 C3 4C 64 C2 ED 4B B3 C260 : C3 8D 4E C3 AD 50 C3 D0 04 C268 : 24 AD 4F C3 CD 4E C3 B0 6F C270 : 1C AE 4E C3 8D 4E C3 8E 67 C278 : 4F C3 AD 56 C3 8D 54 C3 60 C280 : AD 53 C3 8D 55 C3 C8 8C 29 C288 : 56 C3 8C 53 C3 AD 50 C3 C0 C290 : 4A 8D 4D C3 AD 4F C3 6A A6 C298 : 8D 4C C3 4C 31 C3 AD 56 5A C2A0 : C3 30 0E 18 65 14 85 14 37 C2A8 : A5 15 69 00 85 15 4C BE E2 C2B0 : C2 38 A5 14 E9 01 85 14 5F C2B8 : A5 15 E9 00 85 15 18 AD 1F C2C0 : 4B C3 6D 55 C3 8D 4B C3 50 C2C8 : 18 AD 4C C3 6D 4E C3 8D B6 C2D0 : 4C C3 AD 4D C3 69 00 8D B5 C2D8 : 4D C3 EE 51 C3 D0 03 EE 99 C2E0 : 52 C3 AD 4D C3 CD 50 C3 9C C2E8 : 90 47 D0 08 AD 4F C3 CD 51 C2F0 : 4C C3 B0 3D 38 AD 4C C3 9B C2F8 : ED 4F C3 8D 4C C3 AD 4D 64 C300 : C3 ED 50 C3 8D 4D C3 AD F4 C308 : 54 C3 30 0E 18 65 14 85 14 C310 : 14 A5 15 69 00 85 15 4C 82 C318 : 27 C3 38 A5 14 E9 01 85 83 C320 : 14 A5 15 E9 00 85 15 18 3A C328 : AD 4B C3 6D 53 C3 8D 4B 39 C330 : C3 AE 4B C3 20 9E C0 AD EB C338 : 52 C3 CD 50 C3 90 09 AD 29 C340 : 4F C3 CD 51 C3 B0 01 60 95 C348 : 4C 9E C2 A5