Hallo,
ich hab in der Mittagspause mal schnell in Pseudocode skizziert,
wie ich mir so eine Line-Routine vorstelle.
Müsste eigentlich funktionieren.
Die Linien sind allerdings noch nicht balanciert,
da war noch ein Trick nötig, der mir jetzt auf
die Schnelle nicht einfällt.
Schau dirs halt mal an...Code:;Drawline in Pseudocode. ;----------------------- ;Übergeben werden die Start- und Endpunkte der Linie xs,ys und ys,ye ;Die Routine braucht nur Addition /Subtrktion, kommt ohne Multiplikation / Division aus. ;Alle Variable könne Byte sein. ;Kann problemlos und einfach in Assembler kodiert werden. Drawline(xs,ys,ys,ye) ;Längen für x und y ausrechnen xlen=xs-xe ylen=ys-ye ;Schrittrichtung für x und Y festlegen if xlen>=0 then xa=1 else xa=-1 if ylen>=0 then ya=1 else ya=-1 ;wenn xlänge grösser ist, dann laufen wir an der X-Achse entlang ; ansonsten an der Y-Achse if abs(xlen) < abs(ylen) then goto walky walkx: temp=xlen do portx=xs porty=ys xs=xs+xa :immer einen Schritt in x-Richtung weiter temp=temp-ylen ;Schritt in Y-Richtung nötig ? if temp<=0 then ;wenn <=0 dann ja temp=temp+xlen ; ys=ys+ya ;Schritt in Y-Richtung endif loop until xs=xe ;Wiederholen bis Ende der Linie Return ;Ende sub WalkY: temp=ylen do portx=xs porty=ys ys=ys+ya temp=temp-xlen if temp<0 then temp=temp+ylen xs=xs+xa endif loop until ys=ye return
Ich denke immer noch über die Hardwarelösung nach,
wo die Linie auf dem Scope mittels zweier Integratoren
automatisch gezogen wird.
Gruß Jan







Zitieren
Lesezeichen