Je vais actuellement essayer d'inscrire des diagonales d'un décagone à l'intérieur d'un cercle
comme ce
p>
en C # Mon approche créerait un cercle P>
e.Graphics.DrawLine(myPen, 20, 5, 50, 50);
3 Réponses :
Un moyen de traiter avec ceci utilise des fonctions trigonométriques Notez que Une fois que vous avez généré une liste de points, connectez le point sin code> et cos code>. Passez-les l'angle désiré, dans les radians, dans une boucle (vous avez besoin d'un multiple de 2 * π / 10 code>, c'est-à-dire a = i * π / 5 code> pour pour i code> entre 0 et 9, inclus). r * sin (a) code> vous donnera le décalage vertical de l'origine; r * cos (a) code> vous donnera le décalage horizontal. P>
sin code> et cos code> est compris entre -1 code> à 1 code>, vous verrez donc donc vous verrez résultats positifs et négatifs. Vous devrez ajouter un décalage pour le centre de votre cercle pour que les points apparaissent aux bons endroits. P>
i code> à point i + 1 code>. Lorsque vous atteignez le neuvième point, connectez-le au point initial pour compléter le polygone. P>
Je ne le teste pas, mais je pense que c'est bien. (FMOD est C ++ La fonction est égale à floatnumber% floatnumber) p> p>
Juste pour les grains et les tibias, voici une implémentation générique qui inscrivra un polygone à facettes dans le rectangle que vous le transmettez. Notez que dans cette approche, je ne calculez pas réellement aucun point absolu. Au lieu de cela, je traduisez l'origine, tournant la surface et dessinez les lignes uniquement par rapport à l'origine à l'aide d'une longueur fixe et d'un angle. Ceci est répété dans une boucle pour atteindre le résultat final ci-dessous et est très similaire à la commande de la tortue dans Logo :
p>
C'est un enfer d'un exemple.
Si je vais utiliser cette approche, comment puis-je déplacer tout l'objet (décagionnon inscrit dans un cercle) d'un point à un autre? L'objectif principal de mon projet est de projeter la traduction, la rotation, etc.etc.
Il tire sur la base du rectangle b> vous passez. Passez simplement le nouveau rectangle à Inscambernepolygon () et le dessinera à l'emplacement spécifié.
Stockez le rectangle au niveau de la classe (formulaire). Ensuite, vous modifiez simplement ce rectangle et appelez this.refresh (); code>. L'événement de peinture () passera ensuite simplement E.graphics code>, le rectangle et le nombre de côtés (10) à inscrits (). Le décagone redessinera instantanément dans la nouvelle taille / la nouvelle position.
Regarde une trigonométrie. Puisque vous savez que vous utilisez 36, 72, 108 ... degrés, et vous connaissez votre rayon
r code>, vous pouvez utilisermath.sin code> etmaths. COS CODE> Pour calculer les coordonnées X / Y de chaque point. mathwords.com/s/sohcahtoa.htm Edit: donc par exemple, le x- Coordonnée du premier point à 36 degrés pourrait êtreRADIUS * MATH.COS (MATH.PI / 5) CODE> (Sachez queMATH.SIN / COS CODE> Prenez des radians, pas de degrés )