Est-ce que quelqu'un connaît un bon algorithme pour dessiner une ellipse d'une boîte à bornes?
draw_ellipse(int s1, int s2, int s3, int s4, color c);
Je n'ai pas besoin de quelque chose d'optimisé pour une efficacité incompréhensible et illisible. Juste quelque chose d'assez bon pour utiliser une API de dessin simple. Vous pouvez fournir l'algorithme de votre réponse dans toutes les langages de programmation ou même pseudocode, mais je préférerais cela si vous utilisez C++ ou une syntaxe C++ - comme une syntaxe.
Un pseudo-code très basique et complètement non testé pour dessiner une ellipse à l'aide d'une équation polaire paramétrique est inférieure à:
Function draw_ellipse(int X1, int Y1, int X2, int Y2)
RX = (X2 - X1) / 2
RY = (Y2 - Y1) / 2
CX = (X2 + X1) / 2
CY = (Y2 + Y1) / 2
for Angle = 0 to 360
X = CX + cos(Angle) * RX
Y = CY + sin(Angle) * RY
if (Angle > 0) DrawLine(LastX, LastY, X, Y)
LastX = X
LastY = Y
Next Angle
End Function
Notes/Commentaires:
Normalement, j'ai défini une ellipse avec le point central, semi-majeur, semi-mineur et l'angle de rotation.
Ce que vous avez décrit est une ellipse dont le point central doit être déterminé et n'est pas pivoté l'algorithme le plus largement utilisé dans les graphiques pour un cercle est de Bresenham, Kennedy l'a adapté pour une ellipse.