Autor Beitrag
Kasko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

Win 10
C# C++ (VS 2017/19), (Java, PHP)
BeitragVerfasst: Di 07.08.18 00:45 
Wie berechne ich die Anzahl an Pixel, die benötigt werden um eine durchgezogene Ellipse mit Liniendicke = 1 zu zeichnen. Gegeben sich die Höhe und die Breite des umschließenden Rechteckes (in Pixel).

Es geht wirklich nur um die Anzahl, nicht um Position, etc. der Pixel. Ich berechne die Ellipse anhand einer "Winkeliteration" (keine Ahnung ob es dieses Wort gibt). Das heißt, ich gehe von 0° bis 360° und berechne anhand dessen die entsprechenden Pixel. Wenn ich nun nach jeder Berechnung den Winkel um 1 erhöhe bekomme ich 360 Punkte/Pixel. Das bedeutet aber noch lange nicht, dass es genug sind und es eine durchgezogene Ellipse ist, oder vielleicht sind es auch viel zu viele. Deshalb möchte ich vorher ausrechnen wie viele Punkte benötigt werden und dementsprechend die Iteration anpassen.

Edit:

Alternativ könnt ihr mir auch helfen die Ellipsengleichung (x^2)/(xRadius^2) + (y^2)/(yRadius^2) = 1 zu implementieren, da diese Gleichung für jedes x und y mehrere Lösungen hat. Dies würde die Frage wie ich die Anzahl der Pixel berechne erübrigen.

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1647
Erhaltene Danke: 238

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Di 07.08.18 07:05 
Hallo,

sieh mal bei "Bresenham-Algorithmus" nach:
de.wikipedia.org/wik...Algorithmus#Ellipsen
Statt die 4 Setpixel(..) kannst Du ja einfach einen Zähkler um 4 erhöhen.
Wenn Du Dir die Zeichnung für den Kreis auf der Seite anschaust:
user defined image
EDIT:
r= 12 Pixel sind es im Bild 17 Pixel für den 1/4-Kreis.Dabei ist ein Pixel schon vom nächsten Viertelkreis also 16 Pixel.
Also Pixel für Viertelkreis mit Radius r irgendwo zwischen 17/12 und 16/12 = 1,417 und 1.333.

Gruß Horst
Kasko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

Win 10
C# C++ (VS 2017/19), (Java, PHP)
BeitragVerfasst: Do 09.08.18 02:04 
Das gilt jedoch für einen Kreis mit einem einheitlichen Radius. Eine Ellipse besitzt jedoch 2 Radien und je nachdem welchen man verändert, verändert sich die Anzahl der Pixel unterschiedlich.