Dans mon projet, je dois implémenter la rastérisation en cercle et en ellipse (en C++ ou en assemblage + SIMD si possible). Je connais l'algorithme du cercle médian et l'algorithme du cercle de Bresenham. Mais ces algorithmes fonctionnent avec des valeurs entières (centre x, centre y et rayon). Dans mon cas, le rayon et le centre doivent être exprimés en format flottant (ou au moins un point fixe). Et aussi le rayon peut être inférieur à 1px. J'ai donc besoin d'un algorithme qui fonctionne avec des valeurs à virgule flottante. Quelqu'un peut-il m'aider?Algorithme de rasterisation de cercle et d'ellipse
0
A
Répondre
0
Selon le Bresenham's algorithm de Wikipédia, on pense à dessiner un cercle dans les pixels de l'écran. C'est la raison pour laquelle vous pouvez baser les calculs de votre cercle sur des nombres à virgule flottante, en plaçant le centre dans un endroit non entier, avec un rayon non entier, et votre cercle sera tracé exactement en pixels entiers.
Même si vos coordonnées sont exprimées en format flottant, vous pouvez arrondir tout nombre à virgule flottante à un nombre entier. En outre, la pixellisation implique que vous travaillez avec des entiers (vous convertissez une image vectorielle en pixels). Vous pouvez arrondir les nombres à virgule flottante aux entiers. – berendeanicolae
Pourquoi un point flottant? Pouvez-vous accéder à 0,152 d'un pixel? –
Je suppose que l'on pourrait discuter 0,152 d'un pixel si l'on parlait quelque chose comme le lissage des polices. Mais je doute que ce soit ça. – infixed