C 64
Tips und Tricks

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
Listing 1. Das Basic-Programm »Drawline«
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
Listing 3. Das Maschinen-Programm »Draw« geben Sie bitte mit dem MSE ein.
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →