Bresenham's Algorithmus für Linien - begreife eine Sache nicht
-
Eine Prüfung auf 0,5 weil falls der Fehler über 0,5 liegt (weicht von der Ideallinie ab) es ein Pixel nach oben (y-Achse) statt nach rechts gesetzt wird (frühere Versuche, auch auf der Seite zu finden).
Deine Funktion braucht mehr Rechenzeit, da die if-Abfrage nicht auf 0 sondern auf den nenner prüft und um das zu vermeiden wurde es auf 'meinem' Beispiel halt verschoben (?). Das Beispiel ist außerdem vereinfacht, es funktioniert nur im 1. Oktanten.
@TGGC du gehst mir auf den Sack, wenn du 'lesen' kannst, kannst du einfach sagen, ob ich richtig oder falsch mit meiner Vermutung liege (Ja oder Nein ist deutlich kürzer und dazu noch hilfreicher als der Mist, den du hier abziehst).
-
Strogij, ignoriere den Typen. Sinnlose und dumme comments zu posten ist sein liebstes (und einziges?) Hobby, also lass ihn labern und lass Dich davon nicht ablenken
-
na also, dann hast du es ja kapiert. Und ich auch.
Strogij schrieb:
Deine Funktion braucht mehr Rechenzeit, da die if-Abfrage nicht auf 0 sondern auf den nenner prüft
Na, wenn du meinst
Wenn das der ganze Sinn dieses "mal 2"-Hokuspokus ist.
Außerdem, wenn du schon auf dieser low-level Ebene Argumentierst:
Du machst in jedem Schleifendurchlauf folgendes:1)Rufst Eine Funktion auf
2)Übergibst Argumente, diese müssen auf den Stack gelegt werden
3)Es werden sonst noch irgendwelche sachen gemacht (faktisch wird in den Screen-Array geschrieben)
4)return aus der Funktion
Das ist langsamer.Obwohl deins langsamer ist, ist es vollkommen gleich. Ich glaube, höchstens mit dem QueryPerformanceCounter könnte man hier einen signifikanten unterschied feststellen (wenn überhaupt)
So viel dazu
-
Du meinst setPixel()? Aber wie willst du dann eine Linie zeichnen?
@durito danke, werde ich mir merken.
-
Strogij schrieb:
Du meinst setPixel()? Aber wie willst du dann eine Linie zeichnen?
@durito danke, werde ich mir merken.Ja ich sag ja nix, das ist unter umständen die einzige möglichkeit. Bei mir nicht, ich habe den ScreenPointer Direkt und schreibe auch rein. Ohne funktion.
Was ich noch sagen wollte: Ich höre oft, dass manche sagen, dies und das sei schneller, und begründen dies, indem sie sich unwesentliche dinge in der syntax o.ä. berufen. Ich glaube, es gibt keinen irgend messbaren unterschied zwischen deiner und meiner if-Abfrage, denn es handelt sich hier nur um ein paar bits unterschied. Sowas ist irrelevant. Manche sollten sich lieber drauf konzentrieren, performante algorithmen zu entwerfen, anstatt sich um so irrelevante sachen zu kümmern.
Ist jetzt nicht spezifisch auf dich bezogen, wollte das nur mal gesagt haben, weil du auf die if Anweisung gedeutet hast.
-
Ne, ist klar das habe ich auch aus der Vorlesung, dass es keinen gewaltigen Unterschied macht ist bei heutigen Prozessoren verständlich (Bresenham's Algo ist ja auch von 1965).
-
Strogij schrieb:
dass es keinen gewaltigen Unterschied macht ist bei heutigen Prozessoren verständlich (Bresenham's Algo ist ja auch von 1965).
Es macht auch bei uralten Prozessoren keinen unterschied. Du hasts noch nicht ganz gecheckt: es geht nur um ein paar bits!
-
durito schrieb:
Strogij, ignoriere den Typen. Sinnlose und dumme comments zu posten ist sein liebstes (und einziges?) Hobby, also lass ihn labern und lass Dich davon nicht ablenken
Mit persönlichen Beleidigungen kommst du auch nicht weiter.
Bye, TGGC \-/
-
Ich meine jetzt nur die if-Abfrage.
-
Strogij schrieb:
Ich meine jetzt nur die if-Abfrage.
die hab ich auch gemeint. Wenn man vom Bresenham-Algorithmus spricht, kann man ja kaum von ein paar bits sprechen.
-
Ja, das stimmt.
-
na also