2016-12-19 7 views
0

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

+2

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

+0

Pourquoi un point flottant? Pouvez-vous accéder à 0,152 d'un pixel? –

+0

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

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.