Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| mon fil rouge de l'ete | |
| | Auteur | Message |
---|
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: mon fil rouge de l'ete Lun 12 Juil 2010 - 23:52 | |
| j'ai toujours en tete le meme projet je trace un polygone et je veux faire un scan -line pour en colorier l'interieur. C'est pas gagne.!, et pour l'nstant je bute sur un pb de proportion des cotes,de division par zero,et depas negatif dans les boucles Pour l'instant j'en suis là - Code:
-
' je saisis les sommets et je trace les arretes du polygone convexe ' pb boucle a pas negatif qui n'occasione aucun message d'erreur ! ' pb pour le scanline rem "escape pour sortir" rem click droit dim p%, xa(1000),ya(1000), n ,xb,yb ,a ,v ,x,y ,b ,w print "NOMBRE DE COTES et sommets " input n : ' nombre de cotes= nbr de sommets height 0,1000 width 0,1000 p%=0 2d_fill_color 255,210,0 2d_pen_color 85,89,216 repeat if key_down_code = 27 then terminate if mouse_right_down(0)= 1 wait 10 p%=p%+1
xa(p%)= mouse_x_right_down(0):print ". xa=",xa(p%) xb=xa(p%+1)
ya(p%)= mouse_y_right_down(0) :print "; .ya=",ya(p%) yb=ya(p%+1 ) print "............p=",p% 2d_circle xa(p%),ya(p%),8
end_if until p%=n for p%= 1 to n -1 print ".;;;;;;; xa=",xa(p%) print ";;;;;;;; .ya=",ya(p%)
w=1 if xa(p%)> xa(p%+1) then w=-1 for x=xa(p%) to xa(p%+1)step w 2d_line xa(p%),ya(p%),xa(p%+1),ya(p%+1) a=(ya(p%+1)-ya(p%))/(xa(p%+1)-xa(p%))
b= ya(p%)-a*xa(p%) y=(a*x)+b 2d_circle x,y,3 next x next p% wait 1000 2d_line xa(1),ya(1) , xa(p%),ya(p%) if xa(1)> xa(p%) then w =-1 wait 200 if xa(1)- xa(p%)=0 then xa(p%)= xa(p%)+0.01 for x= xa(1) to xa(p%) step w if xa(1)> xa(p%) then w =-1 if xa(1)- xa(p%)=0 then xa(p%)= xa(p%)+0.01 a=(ya(p%) -ya(1))/(xa(p%) -xa(1 )) b=ya(p%)-a*xa(p%) y=(a*x)+b 2d_fill_color 255,0,255 2d_circle x,y,5 next x print ".......a....",a ' .................................................................... end
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: mon fil rouge de l'ete Mar 13 Juil 2010 - 0:18 | |
| Je fais marcher ton programme, et je n'ai aucune erreur. Il dessine bien un petit rond sur chaque point cliqué à droite, puis, lorsque le compte est bon, il trace une ligne de point en point pour finir par fermer le polygone. Joli. Mais je ne retrouve pas l'erreur dont tu parles. Je continue à chercher...
EDIT
à quoi servent les variables xb et yb dans la boucle de construction du polygone ? Elles ne sont pas utilisées par la suite, en en plus, dans la boucle, elles ont chargées par le contenu de cellules de tableaux qui ne sont PAS ENCORE affectées et dont la valeur n'est donc pas fiable.
EDIT
La ligne 43 2d_line ... ne semble pas avoir de fonction logique. En Effet, elle se trouve à l'intérieur d'une boucle qui dessine une "grosse" ligne entre deux points en traçant des cercles le long de cette ligne, et elle est répétée tel quel, pour chaque itération. Ou alors, c'est un résidu d'une première version de ton programme, ou alors, il faut la sortir de la boucle et la placer soit juste avant de for en ligne 42 (mais alors elle est entièrement "biffée" par la nuée de petits cercles), ou alors il faut la placer après le next x en ligne 50.
Dernière édition par Klaus le Mar 13 Juil 2010 - 0:32, édité 1 fois | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: mon fil rouge de l'ete Mar 13 Juil 2010 - 0:28 | |
| c'est les boucles for next for x= a to b si a est superieur a b le systeme ne renvoit pas de message d'erreur et me trace un seul cercle au lieu de tracer le segment fait lui, de plusieurs cercles successifs | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: mon fil rouge de l'ete Mar 13 Juil 2010 - 0:35 | |
| Je me suis mal exprimé. Il s'agit des lignes 23 et 27 qui chargent respectivement les variables xb et yb avec une valeur PAS ENCORE DEFINIE, mais pas la suite, ces variables ne sont jamais réutilisées.
Dans mon post précédent, j'ai fait une autre remarque, concernant un 2d_line.
EDIT
Je pense que devant la ligne 55, il manque un w = 1.
Puis, en ligne 60, tu modifies la variable w dans la boucle, et cette variable est pourtant le pas de la boucle. C'est dangereux, cela ! Il vaut mieux éviter de toucher aux variables constitutrices de la boucle !
EDIT
Je suis tombé sur une anomalie. Non pas une erreur, mais une anomalie qui est due au code. Je fais un triangle (nombre de sommets 3). Après le troisième click à droite, il trace 2 "grosses" lignes entre point 1 et point 2 et entre point 2 et point 3. Mais il ne trace que la simple ligne 2d_line entre point 3 et point 1 dès que la coordonnée horizontale x du point 3 est entre celles des points 1 et 2. Exemple: Point 1: xa=228 ya=112 Point 2: xa=667 ya=245 Point 3: xa=391 ya=337
Dès que xa(point3)<xa(point1) ou xa(point3)>xa(point2) tout marche bien. A creuser...
Bon, pour ce soir, je vais me coucher; je continuerai demain. | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: mon fil rouge de l'ete Mar 13 Juil 2010 - 0:51 | |
| je me damande s'il est possible de faire un scan_ line pour remplir la figure vu que lorsque 2 points ont la meme valeur en x ou (tres proche),on affiche pas de y. Merci pour ton attention | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: mon fil rouge de l'ete Mar 13 Juil 2010 - 6:52 | |
| Promis, je te fais une commande de remplissage pour la prochaine version instantanée. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: mon fil rouge de l'ete Mar 13 Juil 2010 - 9:07 | |
| | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: mon fil rouge de l'ete Mar 13 Juil 2010 - 14:34 | |
| ça a l'air de vouloir fonctionner je ne touche plus a cette partie du programme quelques messages d'erreur que j'ai notes pour memoire apres la fin du programme . Il fallait rajouter w=1 a la ligne 61 - Code:
-
dim p, xa(1000),ya(1000), n ,a ,v ,x,y ,b ,w ' je saisis les sommets et je trace les arretes du polygone convexe ' pb boucle a pas negatif qui n'occasione aucun message d'erreur ! ' pb pour le scanline rem "escape pour sortir" rem click droit
print "NOMBRE DE SOMMETS input n : ' nombre de cotes= nbr de sommets height 0,1000 width 0,1000 p=0 2d_fill_color 255,210,0 2d_pen_color 85,89,216 repeat if key_down_code = 27 then terminate if mouse_right_down(0)= 1 wait 10 p=p+1
xa(p)= mouse_x_right_down(0):print ". xa=",xa(p)
ya(p)= mouse_y_right_down(0) :print "; .ya=",ya(p)
print "............p=",p 2d_circle xa(p),ya(p),8
end_if until p=n
' .................................................................... for p= 1 to n -1 print ".;;;;;;; xa=",xa(p) print ";;;;;;;; .ya=",ya(p)
w=1 if xa(p)> xa(p+1) then w=-1 for x=xa(p) to xa(p+1)step w
a=(ya(p+1)-ya(p))/(xa(p+1)-xa(p))
b= ya(p)-a*xa(p) y=(a*x)+b 2d_circle x,y,3 w=1 next x next p wait 1003
' ................................................................
w=1 if xa(1)> xa(p) then w =-1 wait 100 for x= xa(1) to xa(p) step w if xa(1)> xa(p) then w =-1 if xa(1)- xa(p)=0 then xa(p)= xa(p)+0.01 a=(ya(p) -ya(1))/(xa(p) -xa(1 )) b=ya(p)-a*xa(p) y=(a*x)+b w=1 2d_fill_color 255,0,0 2d_circle x,y,5 next x print ".......a....",a ' .................................................................... end ' ........................................... 'NAN is not a valid floatinng point value 'INF is not a valid floatinng point value ' 39 2d_line xa(p),ya(p),xa(p+1),ya(p+1) ' 53 2d_line xa(1),ya(1) , xa(p),ya(p)
Merci a Jack et aux autres intervenants Je continue sur ma lancee pour voir si je peux encore avancer | |
| | | Contenu sponsorisé
| Sujet: Re: mon fil rouge de l'ete | |
| |
| | | | mon fil rouge de l'ete | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |