sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Dessinez-moi un polygone Mar 20 Avr 2010 - 23:24 | |
| Dans Panoramic on peut dessiner des figures de base : Le point, la ligne, le carre, le cercle. On peut même les colorer. Je me dis pourquoi aussi le polygone régulier ? Dessiner un polygone a n cotes ?....pas facile à programmer pour moi. Et en plus, le colorer ! Et le faire pivoter Ca existe ailleurs mais je veux le voir se faire avec Panoramic. J’ai pu réaliser un hexagone, puis un octogone. Et là, je bloque..... Je retourne a mes notions de geometrie et trigo Qui sait? | |
|
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Dessinez-moi un polygone Jeu 22 Avr 2010 - 9:27 | |
| - Citation :
- Dessiner un polygone a n cotes ?....pas facile à programmer pour moi.
Je crois que cette question a déjà été posée sur le forum. Voila l'exemple de construction d'un polygone à 5 côtés (pentagone). Comme tout est paramétré, tu peux l'adapter à ta convenance (nombre de côtés en changeant n, rotation en jouant avec a, etc). Tu peux aussi améliorer sa vitesse en mettant 2*Pi*j%/n% dans une variable, ce qui fait que ce calcul ne s'effectuera qu'une seule fois dans la boucle au lieu de deux fois, etc, etc. Tu peux aussi reprendre (Px,Py) comme dernier point, la boucle sera alors jusque J%-1, cela permettra d'avoir un polygone réellement fermé pour le colorer de l'intérieur sans aucune bavure (il y a des tas d'algorithmes pour cela). - Code:
-
dim x0,y0,r,Px,Py,Px2,Py2,j%,n%,Pi,a
rem coordonnées du centre x0=100 Y0=100
rem rayon r=50
rem nombre de côtés n%=5
rem angle de début a=10
Pi = 3.1415926535898
Px = r * Cos(a) + x0 Py = r * Sin(a) + y0
2D_poly_from Px,Py
For j% = 1 To n% Px2 = r*Cos(a + 2*Pi*j%/n%) + x0 Py2 = r*Sin(a + 2*Pi*j%/n%) + y0 2D_poly_to Px2, Py2 Px = Px2 Py = Py2 Next j% En attendant une commande 2D_FILL X,Y qui remplirait une surface en partant du "germe" (X,Y) avec la couleur de remplissage définie par 2D_FILL_COLOR R,G,B (cette commande existe déja), voici un algorithme simple qui permet de remplir une surface par écoulement. On commence par écrire un sous-programme de label floodfill:. A partir du germe (x, y) supposé situé dans la surface à colorier, on prend son voisin de gauche (x - 1,y) et à partir de là on trace la ligne horizontale jusqu’à ce qu’on atteigne la bordure, le dernier point colorié étant noté (xg, y). Puis on fait de même vers la droite, à partir du point (x + 1, y) jusqu’au point touchant la frontière, noté (xd, y). Puis pour chaque point de cette ligne horizontale , entre xg et xd pour les abscisses, on rappelle la fonction floodfill (GOSUB FLOODFILL) sur son voisin supérieur et son voisin inférieur. | |
|
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Dessinez-moi un polygone Lun 10 Mai 2010 - 0:00 | |
| Merci à Jack pour sa reponse .De retour d'un voyage sur Madagascar ,je me remets en ligne seulement maintenant. Je vais utiliser son code .Je vois en le lisant que je ne serait pas parvenu à ce resultat et que je ne faisais que compliquer les choses. La solution parait évidente quand on a l'a sous les yeux !. | |
|
Contenu sponsorisé
| Sujet: Re: Dessinez-moi un polygone | |
| |
|