Pour compléter le "post" de Barbichette sur l'algorithme de tracé de cercle de Bresenham et l'optimisation, visible ici :
http://www.delphifr.com/codes/COMPARATIF-ALGO-CERCLES_54052.aspx
voici une petite présentation d'un autre algorithme de tracé de cercle.
«Mais rien ne ressemble plus à un cercle qu'un autre cercle», me direz-vous ?
- Que nenni, mon bon monsieur ! Il existe dans le monde de la géométrie discrète un cercle merveilleux et pourtant mal connu : le cercle d'Andres.
«Mais ce cercle qu'est-ce qu'il a-t'il de si merveilleux que ça ?»
- Eh bien, cet algorithme permet de paver entièrement le plan par des cercles concentriques, sans les trous que laissent habituellement les autres méthodes de tracé de cercle.
La première utilisation de cette remarquable propriété qui vient à l'esprit, est le dessin de dégradés radiaux particuliers (voir la capture).
Une autre utilisation, moins évidente, est son application dans les logiciels de jeux. Cette algo permet en effet de simuler la "vision" d'un personnage de l'IA. Il suffit de centrer des cercles d'Andres sur le personnage et d'explorer exhaustivement les pixels de la carte du jeu. L'algo donnera la distance précise du premier adversaire (par exemple) rencontré, puis des suivants. De la même façon, on simulera un radar ou le flair d'un animal, etc... dans un rayon donné.
Il est à noter que l'algo concerve cette propriété si on le transpose en 3D.
Pour mettre cet algo en oeuvre je vous propose, dans cette démo, de tester deux méthodes différentes :
- par TCanvas
- directement dans la mémoire du Bitmap
Si vous testez cette démo, vous vous rendrez compte que le travail en mémoire est, de loin, la méthode la plus rapide.
Conclusion :
Fait sous D7 et Seven.
Accepte des Bitmaps de 24 et 32 bits.
Pour obtenir des temps de traitement significatifs (<>0) pour la méthode "en mémoire", vous pouvez jouer sur le nombre de passes et sur la taille du Bitmap, la fiche étant "sizable".
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.