Mai 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 | 31 | | | Calendrier |
|
| | Souci avec 2d_image_paste | |
| | Auteur | Message |
---|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Souci avec 2d_image_paste Sam 2 Mai 2015 - 4:45 | |
| Ce que mon programme est sensé faire : Création d' un cadran dans un "picture" copie de ce cadran avec "2d_image_copy" réglage et visualisation d' un angle par les touches + et - du pavé numérique le cadran est censé être réinitialisé par 2d_image_paste de façon à ne voir que 2 segments mais .... : - Code:
-
dim sc%,Angl,pict$ pict$=dir_current$+"\pict.bmp" label clic
height 0,600+38 width 0,600+16
Picture 1 full_space 1 color 1,0,200,0 display On_Key_down 0,Clic
image 2
Cadran(1,150,200)
set_focus 0
end
Clic: sc%=scancode if sc%=107 : Angl=Angl+0.01 :Move() : end_if if sc%=109 : Angl=Angl-0.01 :Move() : end_if if sc%=27 : terminate :end_if return
SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,A,Ang dim Cx,Cy,Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=120 ' reperage du centre de l' objet 2D Cx=width(Obj%)/2 Cy=height(Obj%)/2 A=(2*acos(-1))/nbs% ' marques interieures for i%=1 to nbs% Ang=A*i% Ax(i%)=Cx+(Ray%*cos(Ang)) Ay(i%)=Cy+(Ray%*sin(Ang)) display next i% ' marques exterieures for i%=1 to nbs% Ang=A*i% Bx(i%)=Cx+(Ray2%*cos(Ang)) By(i%)=Cy+(Ray2%*sin(Ang)) next i% ' tracage du cadran 2D_Target_is 1 2D_pen_color 200,200,200 2D_pen_width 2 for i%=1 to nbs% 2D_line Ax(i%),Ay(i%),Bx(i%),By(i%) next i% ' memorisation du cadran 2d_image_copy 2,0,0,200,200 END_SUB
SUB Move() dim_local Cx,Cy,Mx,My,Nx,Ny,Ray Ray=150 Cx=width(1)/2 Cy=height(1)/2 Mx=Cx+Ray My=Cy Nx=Cx+(Ray*cos(Angl*-1)) Ny=Cy+(Ray*sin(Angl*-1)) 2d_target_is 1 2d_image_paste 2,0,0 2d_pen_color 255,0,0 2d_pen_width 1 2d_line Cx,Cy,Mx,My 2D_LINE Cx,Cy,Nx,Ny set_focus 0 END_SUB | |
| | | Klaus
Nombre de messages : 12295 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Souci avec 2d_image_paste Sam 2 Mai 2015 - 9:09 | |
| C'est parce qu'à cause du "full_space 1", les dimensions du picture ne sont pas 200,200. Essaie comme ça: - Code:
-
' memorisation du cadran 2d_image_copy 2,0,0,width(1),height(1) : ' 200,200 | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Souci avec 2d_image_paste Sam 2 Mai 2015 - 9:45 | |
| le code avec la modif de Klaus: - Code:
-
dim sc%,Angl,pict$ pict$=dir_current$+"\pict.bmp" label clic
height 0,600+38 : width 0,600+16 picture 1 : full_space 1 : color 1,0,200,0
on_key_down 0,Clic
image 2
Cadran(1,150,200)
set_focus 0 : display
end
Clic: sc%=scancode if sc%=107 then Angl=Angl+0.01 : Move() if sc%=109 then Angl=Angl-0.01 : Move() if sc%=27 : terminate :end_if return
SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,A,Ang dim_local Cx,Cy,Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=120 ' reperage du centre de l' objet 2D Cx=width(Obj%)/2 : Cy=height(Obj%)/2 : A=(2*acos(-1))/nbs% ' marques interieures for i%=1 to nbs% : Ang=A*i% : Ax(i%)=Cx+(Ray%*cos(Ang)) : Ay(i%)=Cy+(Ray%*sin(Ang)) : next i% ' marques exterieures for i%=1 to nbs% : Ang=A*i% : Bx(i%)=Cx+(Ray2%*cos(Ang)) : By(i%)=Cy+(Ray2%*sin(Ang)) :next i% ' tracage du cadran 2D_Target_is 1 2D_pen_color 200,200,200 : 2D_pen_width 2 for i%=1 to nbs% : 2D_line Ax(i%),Ay(i%),Bx(i%),By(i%) : next i% ' memorisation du cadran 2d_image_copy 2,0,0,width(1),height(1) display END_SUB
SUB Move() dim_local Cx,Cy,Mx,My,Nx,Ny,Ray Ray=150 : Cx=width(1)/2 : Cy=height(1)/2 Mx=Cx+Ray : My=Cy : Nx=Cx+(Ray*cos(Angl*-1)) : Ny=Cy+(Ray*sin(Angl*-1)) 2d_target_is 1 2d_image_paste 2,0,0 2d_pen_color 255,0,0 : 2d_pen_width 1 : 2d_line Cx,Cy,Mx,My : 2d_line Cx,Cy,Nx,Ny set_focus 0 END_SUB Par contre tu as d'autres moyens (ça diminue le clignotement) comme par exemple: - Code:
-
dim sc%,Angl,pict$ pict$=dir_current$+"\pict.bmp" label clic
height 0,600+38 : width 0,600+16 picture 1 : full_space 1 : color 1,0,200,0
on_key_down 0,Clic
Cadran(1,150,200)
set_focus 0 : display
end
Clic: sc%=scancode if sc%=107 then Move(0) : Angl=Angl+0.01 : Move(1) if sc%=109 then Move(0) : Angl=Angl-0.01 : Move(1) if sc%=27 : terminate :end_if return
SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,A,Ang dim_local Cx,Cy,Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=120 ' reperage du centre de l' objet 2D Cx=width(Obj%)/2 : Cy=height(Obj%)/2 : A=(2*acos(-1))/nbs% ' marques interieures for i%=1 to nbs% : Ang=A*i% : Ax(i%)=Cx+(Ray%*cos(Ang)) : Ay(i%)=Cy+(Ray%*sin(Ang)) : next i% ' marques exterieures for i%=1 to nbs% : Ang=A*i% : Bx(i%)=Cx+(Ray2%*cos(Ang)) : By(i%)=Cy+(Ray2%*sin(Ang)) :next i% ' tracage du cadran 2d_Target_is 1 : 2d_pen_color 200,200,200 : 2d_pen_width 2 for i%=1 to nbs% : 2d_line Ax(i%),Ay(i%),Bx(i%),By(i%) : next i% ' memorisation du cadran display END_SUB
SUB Move(Type_trace%) dim_local Cx,Cy,Mx,My,Nx,Ny,Ray Ray=150 : Cx=width(1)/2 : Cy=height(1)/2 Mx=Cx+Ray : My=Cy : Nx=Cx+(Ray*cos(Angl*-1)) : Ny=Cy+(Ray*sin(Angl*-1)) if Type_trace% = 1 then 2d_pen_color 255,0,0 : else : 2d_pen_color 0,200, 0 2d_pen_width 1 : 2d_Target_is 1 : 2d_line Cx,Cy,Mx,My : 2d_line Cx,Cy,Nx,Ny set_focus 0 END_SUB | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 2 Mai 2015 - 13:50 | |
| Merci à tous les deux, je vais regarder cela de près...très près... Au départ, j' avais mis 360 marques mais les lignes sont trop tordues et ce n' est pas esthétique. L' idéal, serait de dessiner comme une portion de camembert mais je n' ai pas encore trouver comment... | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Souci avec 2d_image_paste Sam 2 Mai 2015 - 15:36 | |
| Tu peux essayer avec la fonction arcor pour faire l'arc de ton camenbert comme tu as déjà les 2 bors. Après tu fais un flood si tu veux, non ? | |
| | | papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Souci avec 2d_image_paste Sam 2 Mai 2015 - 17:57 | |
| - ygeronimi a écrit:
- L' idéal, serait de dessiner comme une portion de camembert mais je n' ai pas
encore trouver comment...
Tu as ici ce que tu demandes, non ? En voici un extrait - Code:
-
rem ============================================================================ Secteur_Circulaire(300,220,0,90,200) ' Secteur_Circulaire(300,220,60,120,180) ' Secteur_Circulaire(300,220,-30,-60,200) ' Secteur_Circulaire(300,220,-60,-30,200) end rem ============================================================================
' Secteur_Circulaire(xc,yc,deb,fin,rayon) ' Tracé d'un secteur circulaire ' Paramètres: ' xc,yc : coordonnées du centre du secteur ' deb,fin : respectivement angle de debut et angle de fin du tracé en DEGRES ' rayon : rayon du secteur ' REMARQUES : ' * Le sens du tracé est le sens trigonométrique (sens anti-horraire) ' * les angles deb et fin peuvent être positifs, négatifs ou nuls. ' * Ils peuvent être > 360° en valeur absolue. ' Exemple d'appel : ' Secteur_Circulaire(300,220,0,90,200) ' Secteur_Circulaire(300,220,60,120,150) ' Secteur_Circulaire(300,220,-30,-60,200) ' Secteur_Circulaire(300,220,-60,-30,200)
SUB Secteur_Circulaire(xc,yc,deb,fin,rayon) dim_local x,y,a,pi,rad,p pi = acos(-1) : rad = pi/180 : deb = mod(deb,360) : fin = mod(fin,360) if deb < 0 then deb = deb + 360 if fin < 0 then fin = fin + 360 if deb > fin then deb = deb - 360 2d_poly_from xc,yc for a = deb to fin x = rayon*cos(a*rad) : y = rayon*sin(a*rad) : 2d_poly_to xc+x,yc-y next a 2d_poly_to xc,yc END_SUB rem ============================================================================
@jicehel Tu peux mettre ce code avant l'appel - Code:
-
dim a for a = 0 to 360 Secteur_Circulaire(300,220,0,a,200) next a
Tu auras une certaine forme que tu coloreras as you like | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Souci avec 2d_image_paste Sam 2 Mai 2015 - 18:50 | |
| OK, ça marchait bien, mais je ne sais pas pourquoi sur mon poste, ça ne marche plus. Sans doute une bétise. Le code: - Code:
-
dim sc%,Angl,pict$ pict$=dir_current$+"\pict.bmp" label clic
height 0,600+38 : width 0,600+16 picture 1 : full_space 1 : color 1,0,200,0
on_key_down 0,Clic
Cadran(1,150,200)
set_focus 0 : display
end
Clic: sc%=scancode if sc%=107 then Move(0) : Angl=Angl+0.5 : Move(1) if Angl > 360 then Angl = Angl - 360 if sc%=109 then Move(0) : Angl=Angl-0.5 : Move(1) if Angl < 0-360 then Angl = Angl + 360 if sc%=27 then terminate return
SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,A,Ang dim_local Cx,Cy,Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=120 ' reperage du centre de l' objet 2D Cx=width(Obj%)/2 : Cy=height(Obj%)/2 : A=(2*acos(-1))/nbs% ' marques interieures for i%=1 to nbs% : Ang=A*i% : Ax(i%)=Cx+(Ray%*cos(Ang)) : Ay(i%)=Cy+(Ray%*sin(Ang)) : next i% ' marques exterieures for i%=1 to nbs% : Ang=A*i% : Bx(i%)=Cx+(Ray2%*cos(Ang)) : By(i%)=Cy+(Ray2%*sin(Ang)) :next i% ' tracage du cadran 2d_Target_is 1 : 2d_pen_color 200,200,200 : 2d_pen_width 2 for i%=1 to nbs% : 2d_line Ax(i%),Ay(i%),Bx(i%),By(i%) : next i% ' memorisation du cadran display END_SUB
SUB Move(Type_trace%) off_key_down 0 dim_local Cx,Cy,Mx,My,Nx,Ny,Ray,R,V,B Ray=150 : Cx=width(1)/2 : Cy=height(1)/2 if Type_trace% = 1 then R=255: V=0 : B=0 : else : R=0: V=200 : B=0 2d_pen_color R,V,B 2d_pen_width 1 : 2d_Target_is 1 Secteur_Circulaire(Cx,Cy,0,Angl,Ray) if Angl > 0 then 2d_flood Cx + Ray - 5, Cy - 1, R,V,B display : set_focus 0 : pause 50 : on_key_down 0,Clic END_SUB
SUB Secteur_Circulaire(xc,yc,deb,fin,rayon) dim_local x,y,a,pi,rad,p pi = acos(-1) : rad = pi/180 : deb = mod(deb,360) : fin = mod(fin,360) if deb < 0 then deb = deb + 360 if fin < 0 then fin = fin + 360 if deb > fin then deb = deb - 360 2d_poly_from xc,yc for a = deb to fin x = rayon*cos(a*rad) : y = rayon*sin(a*rad) : 2d_poly_to xc+x,yc-y next a 2d_poly_to xc,yc END_SUB | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 3 Mai 2015 - 1:53 | |
| Merci à tous les deux, j' attaque ma 45 ème année un peu moins bête que je n' ai fini la 44 ème. @ Jicehel, Cela fonctionne chez moi, même si cela fait un peu stromboscope... | |
| | | papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| | | | Nardo26
Nombre de messages : 2294 Age : 55 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Souci avec 2d_image_paste Dim 3 Mai 2015 - 3:33 | |
| | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 3 Mai 2015 - 3:36 | |
| Une petite modif du visuel pour limiter le clignotement : - Code:
-
dim sc%,Angl,pict$ pict$=dir_current$+"\pict.bmp" label clic
height 0,600+38 : width 0,600+16 picture 1 full_space 1 color 1,255,255,255 Caption 0,"Visio Angles [ Degrés - Radians - Grades ]" on_key_down 0,Clic
Cadran(1,150,200)
set_focus 0 : display
end
Clic: sc%=scancode if sc%=107 then Move(0) : Angl=Angl+0.5 : Move(1) if Angl > 360 then Angl = Angl - 360 if sc%=109 then Move(0) : Angl=Angl-0.5 : Move(1) if Angl < 0-360 then Angl = Angl + 360 if sc%=27 then terminate return
SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,A,Ang dim_local Cx,Cy,Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=360 ' reperage du centre de l' objet 2D Cx=width(Obj%)/2 : Cy=height(Obj%)/2 : A=(2*acos(-1))/nbs% ' marques interieures for i%=1 to nbs% : Ang=A*i% : Ax(i%)=Cx+(Ray%*cos(Ang)) : Ay(i%)=Cy+(Ray%*sin(Ang)) : next i% ' marques exterieures for i%=1 to nbs% : Ang=A*i% : Bx(i%)=Cx+(Ray2%*cos(Ang)) : By(i%)=Cy+(Ray2%*sin(Ang)) :next i% ' tracage du cadran 2d_Target_is 1 :2d_pen_width 1 for i%=1 to nbs% if i%=45 or i%=90 or i%=135 or i%=180 or i%=225 or i%=270 or i%=315 or i%=360 2d_pen_color 100,100,100 2d_line Ax(i%),Ay(i%),Bx(i%),By(i%) else 2d_pen_color 0,200,0 2d_point Bx(i%),By(i%) end_if next i% ' memorisation du cadran display END_SUB
SUB Move(Type_trace%) off_key_down 0 dim_local Cx,Cy,Mx,My,Nx,Ny,Ray,R,V,B,pi,rad$,grd$,deg$ pi=acos(-1) Ray=150 : Cx=width(1)/2 : Cy=height(1)/2 if Type_trace% = 1 then R=255: V=0 : B=0 : else : R=255: V=255 : B=255 2d_pen_color R,V,B 2d_pen_width 1 : 2d_Target_is 1 Secteur_Circulaire(Cx,Cy,0,Angl,Ray) if Angl > 0 then 2d_flood Cx + Ray - 5, Cy - 1, R,V,B deg$ =str$(Angl) rad$ =str$((Angl*pi)/180) : rad$=left$(rad$,5) grd$ =str$((Angl/360)*400): grd$=left$(grd$,7) Caption 0,"Visio Angles [ Degrés : "+deg$+" Radians : "+rad$+" Grades : "+grd$+" ]" display : set_focus 0 : pause 10 : on_key_down 0,Clic END_SUB
SUB Secteur_Circulaire(xc,yc,deb,fin,rayon) dim_local x,y,a,pi,rad,p pi = acos(-1) : rad = pi/180 : deb = mod(deb,360) : fin = mod(fin,360) if deb < 0 then deb = deb + 360 if fin < 0 then fin = fin + 360 if deb > fin then deb = deb - 360 2d_poly_from xc,yc for a = deb to fin x = rayon*cos(a*rad) : y = rayon*sin(a*rad) : 2d_poly_to xc+x,yc-y next a 2d_poly_to xc,yc END_SUB | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 3 Mai 2015 - 3:37 | |
| Merci les gars ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 55 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Souci avec 2d_image_paste Dim 3 Mai 2015 - 3:45 | |
| En parlant de 2d_image_paste, j'aurai bien aimé pouvoir coller des petites images (32x32px) les une à cotés des autres, tout en conservant la notion de canal alpha sous Panoramic... Cela m'aurait bien aidé actuellement. | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 3 Mai 2015 - 4:44 | |
| La transparence est un manque pour Panoramic Si "Picture" prenait en compte les *.png ou *.gif , cela serait un plus non négligeable surtout dans les cadre des évolutions vers les tablettes et autres appareils Androïd ou tout est sur l' image. | |
| | | papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Souci avec 2d_image_paste Dim 3 Mai 2015 - 6:36 | |
| Pour tes 44 ans, voici ma version plus concise et avec un léger ou même ZERO CLIGNOTEMENT ! - Code:
-
rem ============================================================================ label clic dim sc%,Angl, pi, rad, Cx,Cy : pi = acos(-1) : rad = pi/180 height 0,600+38 : width 0,600+16 : Cx=width(0)/2 : Cy=height(0)/2 on_key_down 0,Clic Caption 0,"Visio Angles [ Degrés - Radians - Grades ]"
picture 1 : full_space 1 : color 1,255,255,255 : Cx=width(1)/2 : Cy=height(1)/2 ' Cadran(1,150,200) : ' < ========================== Avec un léger clignotement Cadran(0,150,200) : ' < ========================== Avec ZERO clignotement
end rem ============================================================================ Clic: sc%=scancode if sc%=107 then move(0) : Angl=Angl+1 : Move(1) : ' Signe + if Angl > 360 then Angl = Angl - 360 if sc%=109 then Move(0) : Angl=Angl-1 : Move(1) : ' Signe - if Angl < 0-360 then Angl = Angl + 360 if sc%=27 then terminate
return rem ============================================================================ SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,Ang dim_local Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=360 ' reperage du centre de l' objet 2D ' marques interieures for i%=1 to nbs% : Ang=rad*i% : Ax(i%)=Cx+(Ray%*cos(Ang)) : Ay(i%)=Cy+(Ray%*sin(Ang)) : next i% ' marques exterieures for i%=1 to nbs% : Ang=rad*i% : Bx(i%)=Cx+(Ray2%*cos(Ang)) : By(i%)=Cy+(Ray2%*sin(Ang)) :next i% 2d_target_is Obj% for i% = 45 to 360 step 45 2d_pen_color 100,100,100 2d_line Ax(i%),Ay(i%),Bx(i%),By(i%) next i% 2d_pen_color 0,200,0 for i%=1 to nbs% : 2d_point Bx(i%),By(i%) : next i% 2d_fill_color 255,255,255 : 2d_circle cx,cy,ray% : 2d_circle cx,cy,2 END_SUB rem ============================================================================ SUB Move(Type_trace%) off_key_down 0 dim_local x,y,Mx,My,Nx,Ny,Ray,R,V,B,rad$,grd$,deg$ Ray = 150 : R = 255 : V = 255 : B = 255 if Type_trace% = 1 then R = 255 : V = 0 : B = 0 2d_pen_color R,V,B x = ray*cos(angl*rad) : y = ray*sin(angl*rad) : 2d_line cx,cy,cx+x,cy-y 2d_circle cx,cy,2 deg$ = str$(Angl) rad$ = str$((Angl*pi)/180) : rad$=left$(rad$,5) grd$ = str$((Angl/360)*400): grd$=left$(grd$,7) Caption 0,"Visio Angles [ Degrés : "+deg$+" Radians : "+rad$+" Grades : "+grd$+" ]" on_key_down 0,Clic
END_SUB rem ============================================================================
| |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Souci avec 2d_image_paste Dim 3 Mai 2015 - 11:18 | |
| Ah ben oui Papydall, ça ça marchait bien mais Ygeronimi voulais l'angle sous forme de part de camembert ... d'où le 2d_flood qui génère le clignotement. Si tu retires le camembert forcément ça ne clignote plus. Non après la solution pourrais être de n'effacer ou de ne tracer que la portion de camembert qui change (le delta entre la position d'avant et la position actuelle) mais pas le temsp de faire ça aujourd'hui, on va aller au Playmobile fun parc...
| |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 3 Mai 2015 - 13:55 | |
| Un peu de nostalgie Jicehel ?... Effectivement Papydall mais on visualise moins bien l' angle... | |
| | | papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Souci avec 2d_image_paste Dim 3 Mai 2015 - 15:41 | |
| Du camembert, en veux-tu ? En voilà ! Tu veux mieux visualiser l’angle ? Ça sera en rouge pour les angles positifs et en bleu pour les négatifs. ZERO clignotement. - Code:
-
rem ============================================================================ label clic dim sc%,Angl, pi, rad, Cx,Cy : pi = acos(-1) : rad = pi/180 dim sens height 0,600+38 : width 0,600+16 : Cx=width(0)/2 : Cy=height(0)/2 on_key_down 0,Clic Caption 0,"Visio Angles [ Degrés - Radians - Grades ]"
picture 1 : full_space 1 : color 1,255,255,255 : Cx=width(1)/2 : Cy=height(1)/2 ' Cadran(1,150,200) : ' < ============================ Avec ZERO clignotement Cadran(0,150,200) : ' < ============================ Avec ZERO clignotement
end rem ============================================================================ Clic: sc%=scancode if sc%=107 then Angl=Angl+0.5: sens = 1 : Move(sens) : angl = angl + 1 : ' Signe + if Angl > 360 then Angl = Angl - 360 if sc%=109 then Angl=Angl-0.5 : sens = 0 : Move(sens) : angl = angl -1 : ' Signe - if Angl < 0-360 then Angl = Angl + 360 if sc%=27 then terminate
return rem ============================================================================ SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,Ang dim_local Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=360 ' reperage du centre de l' objet 2D ' marques interieures for i%=1 to nbs% : Ang=rad*i% : Ax(i%)=Cx+(Ray%*cos(Ang)) : Ay(i%)=Cy+(Ray%*sin(Ang)) : next i% ' marques exterieures for i%=1 to nbs% : Ang=rad*i% : Bx(i%)=Cx+(Ray2%*cos(Ang)) : By(i%)=Cy+(Ray2%*sin(Ang)) :next i% 2d_target_is Obj% for i% = 45 to 360 step 45 2d_pen_color 100,100,100 2d_line Ax(i%),Ay(i%),Bx(i%),By(i%) next i% 2d_pen_color 0,200,0 for i%=1 to nbs% : 2d_point Bx(i%),By(i%) : next i% 2d_fill_color 255,255,255 : 2d_circle cx,cy,ray% : 2d_circle cx,cy,2 END_SUB rem ============================================================================ SUB Move(sens) off_key_down 0 dim_local x,y,Mx,My,Nx,Ny,Ray,R,V,B,rad$,grd$,deg$ Ray = 150 if sens = 1 if angl > 0 then r = 255 : v = 0 : b = 0 : else : r = 255 : v = 255 : b = 255 else if angl > 0 then r = 255 : v = 255 : b = 255 : else : r = 0 : v = 0 : b = 255 end_if 2d_pen_color R,V,B : 2d_pen_width 6 x = ray*cos(angl*rad) : y = ray*sin(angl*rad) : 2d_line cx,cy,cx+x,cy-y 2d_circle cx,cy,2 deg$ = str$(Angl) rad$ = str$((Angl*pi)/180) : rad$=left$(rad$,5) grd$ = str$((Angl/360)*400): grd$=left$(grd$,7) Caption 0,"Visio Angles [ Degrés : "+deg$+" Radians : "+rad$+" Grades : "+grd$+" ]" on_key_down 0,Clic
END_SUB rem ============================================================================
| |
| | | papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Souci avec 2d_image_paste Dim 3 Mai 2015 - 16:01 | |
| Une légère amélioration quand l’angle dépasse 360 ° en valeur absolue, on remet les couleurs à leur place. NB : les angles varient de 1° en 1° dans les deux sens (positif / négatif) - Code:
-
rem ============================================================================ label clic dim sc%,Angl, pi, rad, Cx,Cy : pi = acos(-1) : rad = pi/180 dim sens height 0,600+38 : width 0,600+16 : Cx=width(0)/2 : Cy=height(0)/2 on_key_down 0,Clic Caption 0,"Visio Angles [ Degrés - Radians - Grades ]" picture 1 : full_space 1 : color 1,255,255,255 : Cx=width(1)/2 : Cy=height(1)/2 Cadran(0,150,200) ' Cadran(1,150,200) end rem ============================================================================ Clic: sc%=scancode if sc%=107 then sens = 1 : Move(sens) : angl = angl + 1 : ' Signe + if Angl > 360 then Angl = Angl - 360 if sc%=109 then sens = 0 : Move(sens) : angl = angl - 1 : ' Signe - if Angl < 0-360 then Angl = Angl + 360 if sc%=27 then terminate
return rem ============================================================================ SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,Ang dim_local Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=360 ' reperage du centre de l' objet 2D ' marques interieures for i%=1 to nbs% : Ang=rad*i% : Ax(i%)=Cx+(Ray%*cos(Ang)) : Ay(i%)=Cy+(Ray%*sin(Ang)) : next i% ' marques exterieures for i%=1 to nbs% : Ang=rad*i% : Bx(i%)=Cx+(Ray2%*cos(Ang)) : By(i%)=Cy+(Ray2%*sin(Ang)) :next i% 2d_target_is Obj% for i% = 45 to 360 step 45 2d_pen_color 100,100,100 2d_line Ax(i%),Ay(i%),Bx(i%),By(i%) next i% 2d_pen_color 0,200,0 for i%=1 to nbs% : 2d_point Bx(i%),By(i%) : next i% 2d_fill_color 255,255,255 : 2d_circle cx,cy,ray% : 2d_circle cx,cy,2 END_SUB rem ============================================================================ SUB Move(sens) off_key_down 0 dim_local x,y,Mx,My,Nx,Ny,Ray,R,V,B,rad$,grd$,deg$ Ray = 150
if sens = 1 if angl > 0 then r = 255 : v = 0 : b = 0 : else : r = 255 : v = 255 : b = 255 else if angl > 0 then r = 255 : v = 255 : b = 255 : else : r = 0 : v = 0 : b = 255 end_if 2d_pen_color R,V,B : 2d_pen_width 6 x = ray*cos(angl*rad) : y = ray*sin(angl*rad) : 2d_line cx,cy,cx+x,cy-y 2d_circle cx,cy,2 if abs(angl) >= 360 then 2d_flood cx,cy,255,255,255 deg$ = str$(Angl) rad$ = str$((Angl*pi)/180) : rad$=left$(rad$,5) grd$ = str$((Angl/360)*400): grd$=left$(grd$,7) Caption 0,"Visio Angles [ Degrés : "+deg$+" Radians : "+rad$+" Grades : "+grd$+" ]" on_key_down 0,Clic
END_SUB rem ============================================================================
| |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Souci avec 2d_image_paste Dim 3 Mai 2015 - 18:35 | |
| Oui, c'est très bien Par respect pour le cercle vert, j'ai fais une petite modif mineure. - Code:
-
rem ============================================================================ label clic dim sc%,Angl, pi, rad, Cx,Cy : pi = acos(-1) : rad = pi/180 dim sens height 0,600+38 : width 0,600+16 : Cx=width(0)/2 : Cy=height(0)/2 on_key_down 0,Clic Caption 0,"Visio Angles [ Degrés - Radians - Grades ]" picture 1 : full_space 1 : color 1,255,255,255 : Cx=width(1)/2 : Cy=height(1)/2 Cadran(0,150,200) ' Cadran(1,150,200) end rem ============================================================================ Clic: sc%=scancode if sc%=107 then sens = 1 : Move(sens) : angl = angl + 1 : ' Signe + if Angl > 360 then Angl = Angl - 360 if sc%=109 then sens = 0 : Move(sens) : angl = angl - 1 : ' Signe - if Angl < 0-360 then Angl = Angl + 360 if sc%=27 then terminate
return rem ============================================================================ SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,Ang dim_local Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=360 ' reperage du centre de l' objet 2D ' marques interieures for i%=1 to nbs% : Ang=rad*i% : Ax(i%)=Cx+(Ray%*cos(Ang)) : Ay(i%)=Cy+(Ray%*sin(Ang)) : next i% ' marques exterieures for i%=1 to nbs% : Ang=rad*i% : Bx(i%)=Cx+(Ray2%*cos(Ang)) : By(i%)=Cy+(Ray2%*sin(Ang)) :next i% 2d_target_is Obj% for i% = 45 to 360 step 45 2d_pen_color 100,100,100 2d_line Ax(i%),Ay(i%),Bx(i%),By(i%) next i% 2d_pen_color 0,200,0 for i%=1 to nbs% : 2d_point Bx(i%),By(i%) : next i% 2d_fill_color 255,255,255 : 2d_circle cx,cy,ray% : 2d_circle cx,cy,2 END_SUB rem ============================================================================ SUB Move(sens) off_key_down 0 dim_local x,y,Mx,My,Nx,Ny,Ray,R,V,B,rad$,grd$,deg$ Ray = 150
if sens = 1 if angl > 0 then r = 255 : v = 0 : b = 0 : else : r = 255 : v = 255 : b = 255 else if angl > 0 then r = 255 : v = 255 : b = 255 : else : r = 0 : v = 0 : b = 255 end_if 2d_pen_color R,V,B : 2d_pen_width 6 x = (ray-4)*cos(angl*rad) : y = (ray-4)*sin(angl*rad) : 2d_line cx,cy,cx+x,cy-y 2d_circle cx,cy,2 if abs(angl) >= 360 then 2d_flood cx,cy,255,255,255 deg$ = str$(Angl) rad$ = str$((Angl*pi)/180) : rad$=left$(rad$,5) grd$ = str$((Angl/360)*400): grd$=left$(grd$,7) Caption 0,"Visio Angles [ Degrés : "+deg$+" Radians : "+rad$+" Grades : "+grd$+" ]" on_key_down 0,Clic
END_SUB rem ============================================================================ | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 3 Mai 2015 - 18:40 | |
| On pourrait laisser travailler les aiguilles sans remplissage couleur et ajouter un On_key_up qui reprendrait le remplissage par sub de papydall. cela permettrait d' avoir une aiguille plus fine... | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: Souci avec 2d_image_paste Lun 4 Mai 2015 - 18:51 | |
| bon d'accord je suis en retard BON ANNIVERSAIRE ygeronimy | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 4 Mai 2015 - 19:10 | |
| merci Mindstorm ! | |
| | | silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Souci avec 2d_image_paste Mar 5 Mai 2015 - 12:46 | |
| Salut à tous, ma contribution également: - l'aiguille est très fine -affiche une aiguille verte à angle=0 - l'aiguille travaille sans remplissage et ne laisse plus de trace quant elle se déplace - Code:
-
rem ============================================================================ label clic dim sc%,Angl, pi, rad, Cx,Cy : pi = acos(-1) : rad = pi/180 dim sens height 0,600+38 : width 0,600+16 : Cx=width(0)/2 : Cy=height(0)/2 on_key_down 0,Clic Caption 0,"Visio Angles [ Degrés - Radians - Grades ]" picture 1 : full_space 1 : color 1,255,255,255 : Cx=width(1)/2 : Cy=height(1)/2 Cadran(0,150,200) move(0): ' ajouté un affichage de la position initiale(aiguille verte) ' Cadran(1,150,200) end rem ============================================================================ Clic: sc%=scancode if sc%=107 then sens = 1 : angl = angl + 1 : Move(sens): ' Signe + if Angl > 360 then Angl = Angl - 360 if sc%=109 then sens = -1 : angl = angl - 1 : Move(sens) : ' Signe - /modifié valeur de sens pour l'exploiter dans la sub move() if Angl < 0-360 then Angl = Angl + 360 if sc%=27 then terminate
return rem ============================================================================ SUB Cadran(Obj%,Ray%,Ray2%) dim_local i%,Ang dim_local Ax(360),Ay(360),Bx(360),By(360),nbs% nbs%=360 ' reperage du centre de l' objet 2D ' marques interieures for i%=1 to nbs% : Ang=rad*i% : Ax(i%)=Cx+(Ray%*cos(Ang)) : Ay(i%)=Cy+(Ray%*sin(Ang)) : next i% ' marques exterieures for i%=1 to nbs% : Ang=rad*i% : Bx(i%)=Cx+(Ray2%*cos(Ang)) : By(i%)=Cy+(Ray2%*sin(Ang)) :next i% 2d_target_is Obj% for i% = 45 to 360 step 45 2d_pen_color 100,100,100 2d_line Ax(i%),Ay(i%),Bx(i%),By(i%) next i% 2d_pen_color 0,200,0 for i%=1 to nbs% : 2d_point Bx(i%),By(i%) : next i% 2d_fill_color 255,255,255 : 2d_circle cx,cy,ray% : 2d_circle cx,cy,2 END_SUB rem ============================================================================ SUB Move(sens) off_key_down 0 dim_local x,y,Mx,My,Nx,Ny,Ray,R,V,B,rad$,grd$,deg$ Ray = 150 ' aiguille rouge si angl est +, bleue si -, verte si 0 if angl > 0 r = 255 : v = 0 : b = 0 else if angl=0 r = 0 : v = 128 : b = 0 else r = 0 : v = 0 : b = 255 end_if end_if ' efface l'aiguille précedente 2d_pen_color 255,255,255 : 2d_pen_width 1 x = (ray-4)*cos((angl-sens)*rad) : y = (ray-4)*sin((angl-sens)*rad) : 2d_line cx,cy,cx+x,cy-y 2d_pen_color R,V,B x = (ray-4)*cos(angl*rad) : y = (ray-4)*sin(angl*rad) : 2d_line cx,cy,cx+x,cy-y 2d_circle cx,cy,2 if abs(angl) >= 360 then 2d_flood cx,cy,255,255,255 deg$ = str$(Angl) rad$ = str$((Angl*pi)/180) : rad$=left$(rad$,5) grd$ = str$((Angl/360)*400): grd$=left$(grd$,7) Caption 0,"Visio Angles [ Degrés : "+deg$+" Radians : "+rad$+" Grades : "+grd$+" ]" on_key_down 0,Clic
END_SUB rem ============================================================================
| |
| | | Contenu sponsorisé
| Sujet: Re: Souci avec 2d_image_paste | |
| |
| | | | Souci avec 2d_image_paste | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |