um endlich mal 2 punkte miteinander verbinden zu können auf meinem lcd brauch ich den Bresenham algo, jedoch lässt dieser sich nicht so einfach in bascom übersetzen, bzw dachte ich eigentlich das es einfacher gehn muss,
habs eigentlich schon soweit, jedoch bringt mir bascom immer nen fehler
weiss jemand vielleicht warum ich in der markierten zeile nen fehler Code 63 bekomme, Integer or Long expected? habs doch oben definiert,.
habs eigentlich schon soweit, jedoch bringt mir bascom immer nen fehler
Code:
Sub Lcd_line(byval Xpos1 As Word , Byval Ypos1 As Word , Byval Xpos2 As Word , Byval Ypos2 As Word)
REM Bresenham-Algorithmus für eine Linie in einem beliebigen Oktanten in Pseudo-Basic
Local Dx As Long
Local Dy As Long
Local Adx As Long
Local Ady As Long
Local Sdx As Single
Local Sdy As Single
Local Pdy As Word
Local Pdx As Word
Local Ddx As Word
Local Ddy As Word
Local Es As Word
Local El As Word
Local I As Word
Local X As Word
Local Y As Word
Local Fehler As Byte
Dx = Xpos2 - Xpos1
Dy = Ypos2 - ypos1
REM Initialisierungen
Adx = Abs(dx)
Ady = Abs(dy) ' Absolutbetraege Distanzen
[I] Sdx = Sgn(dx)
sdy = SGN(dy) ' Signum Distanzen[/I]
IF adx > ady THEN
' x ist schnelle Richtung
Pdx = Sdx:pdy = 0 ' pd. ist Parallelschritt
Ddx = Sdx : Ddy = Sdy ' dd. ist Diagonalschritt
Es = Ady : El = Adx ' Fehlerschritte schnell, langsam
ELSE
' y ist schnelle Richtung
Pdx = 0 : Pdy = Sdy ' pd. ist Parallelschritt
Ddx = Sdx : Ddy = Sdy ' dd. ist Diagonalschritt
Es = Adx : El = Ady ' Fehlerschritte schnell, langsam
END IF
X = Xpos1
Y = Ypos1
Call Lcd_set_pixel(x , Y , White)
fehler = el/2
REM Pixelschleife: immer ein Schritt in schnelle Richtung, hin und wieder auch einer in langsame
FOR i=1 TO el ' el gibt auch Anzahl der zu zeichnenden Pixel an
REM Aktualisierung Fehlerterm
fehler = fehler - es
IF fehler < 0 THEN
fehler = fehler + el ' Fehlerterm wieder positiv (>=0) machen
REM Schritt in langsame Richtung
x = x + ddx: y = y + ddy ' Diagonalschritt
ELSE
REM Schritt in schnelle Richtung
x = x + pdx: y = y + pdy ' Parallelschritt
END IF
Call Lcd_set_pixel(x , Y , White)
Next
End Sub
weiss jemand vielleicht warum ich in der markierten zeile nen fehler Code 63 bekomme, Integer or Long expected? habs doch oben definiert,.