^1---> Alle Listings liegen auch im Verzeichnis SOURCES vor, wo ihr sie direkt ^1 in die Programmiersprache hineinladen und starten k”nnt. >> The Real Adok: Dieses QBasic-Programm von LeidPen demonstriert, wie man mit Hilfe des Bresenham-Algorithmus Kreise zeichnen kann. In QBasic gibt es zwar ohnehin schon eine eigene Routine dafr (CIRCLE), aber wer z.B. in Assembler codet, muá auf solche vorgefertigte Befehle verzichten und sich eine eigene Kreis-Routine schreiben. Dabei kann einem der Bresenham- Algorithmus sehr helfen! ^0'** BRESNHAM.BAS ^0'** Demo der Bresenham-Algorithmen fr den Kreis ^0'** Autor: Roland Heer ^0'** Sprache: QBasic ^0'** Stand: 20.10.96 ^0'** Public Domain ^0'----------------------------------------------- ^0DEFINT A-Z ^0DECLARE SUB Kreis (x0, y0, r, Farbe, Modulo) ^0 SCREEN 12 ^0 CLS ^0 md = 5 ^0 t! = TIMER ^0 FOR r = 1 TO 230 ^0 CALL Kreis(320, 240, r, 15, md) ^0 NEXT r ^0 PRINT USING " Zeitbedarf: ###.##"; TIMER - t!; ^0 PRINT " sec"; ^0 SLEEP ^0SYSTEM ^0SUB Kreis (x0, y0, r, Farbe, md) ^0 d = 3 - 2 * r ^0 x = 0: y = r 'Anfang bei -90ø ^0 DO ^0 GOSUB Muster 'Farbmuster, wenn gewnscht ^0 PSET (x0 + x, y0 + y), Farbe ^0 PSET (x0 - x, y0 + y), Farbe ^0 PSET (x0 + x, y0 - y), Farbe ^0 PSET (x0 - x, y0 - y), Farbe ^0 PSET (x0 + y, y0 + x), Farbe ^0 PSET (x0 - y, y0 + x), Farbe ^0 PSET (x0 + y, y0 - x), Farbe ^0 PSET (x0 - y, y0 - x), Farbe ^0 IF d >= 0 THEN ^0 d = d + 4 * (x - y) + 10 ^0 y = y - 1 ^0 ELSE ^0 d = d + 4 * x + 6 ^0 END IF ^0 x = x + 1 ^0 LOOP UNTIL x > y ^0EXIT SUB ^0Muster: ^0 n = n + 1 ^0 IF (n MOD md) = 0 THEN Farbe = (Farbe + 1) MOD 16 ^0RETURN ^0END SUB