| Comment dessiner une ellipse ? | |
|
+4Yannick papydall Jicehel Parpaiun 8 participants |
Auteur | Message |
---|
Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Comment dessiner une ellipse ? Lun 27 Avr 2015 - 11:33 | |
| Help ! Help ! J'ai besoin de dessiner une ellipse et je ne trouve pas quelle primitive employer dans la liste des références Panoramic. Merci de m'aider S.V.P. ! Parpaiun | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Comment dessiner une ellipse ? Lun 27 Avr 2015 - 11:43 | |
| Tu as la réponse ici: https://panoramic.1fr1.net/t3211-subs-de-trace-de-figures-geometriquesJe te met le lien car notre ami Papydall avait envoyer le code pour plusieurs figures très interessante et la proc extraite de son code est: - Code:
-
' ****************************************************************************** ' Tracé d'une ellipse ' Appel : Ellipse(xc,yc,rx,ry) ' Paramètres: ' xc,yc : coordonnées du centre de l'ellipse ' rx et ry : respectivement rayon horizontal et rayon vertical de l'ellipse ' si rx = ry on obtient un cercle ' Exemple d'appel : ' Ellipse(250,220,100,200) ' Ellipse(250,220,200,100)
SUB Ellipse(xc,yc,rx,ry) dim_local x,y,t,pi,p pi = acos(-1) : p = pi/180 2d_poly_from xc + rx,yc for t = 0 to 2*pi step p x = xc + rx * cos(t) : y = yc + ry * sin(t) : 2d_poly_to x,y next t END_SUB | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Comment dessiner une ellipse ? Lun 27 Avr 2015 - 17:12 | |
| Panoramic ne possède pas de commande pour le tracé d’une ellipse. On peut facilement la coder. L' équation paramétrique d'une ellipse centrée à l'origine est : x(t) = a cos(t) y(t) = b sin (t)
Pour une ellipse dont le centre est xc,yc, son équation devient : x(t) = xc + a cos(t) y(t) = yc + b sin (t)
avec a : demi-diamètre (donc rayon) horizontal b : demi-diamètre (donc rayon) vertical t : angle variant de 0 à 2*pi radians
Si a > b , on a une ellipse horizontale Si a < b , l’ellipse est verticale Si a = b , on a affaire à un cercle
En fait un cercle n’est qu’une ellipse dont les deux foyers sont confondus au centre.
Dernière édition par papydall le Lun 27 Avr 2015 - 18:43, édité 2 fois (Raison : Correction d'une erreur signalée par ygeronimi qui lit bien mes messages!) | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Comment dessiner une ellipse ? Lun 27 Avr 2015 - 17:27 | |
| Là tu as fait trop simple Papydall. Tu aurais pû nous sortir une formule sur la projection d'un cercle sur un plan donné pour obtenir une élipse ... Je plaisante Papydall: ton explication (tout comme ta procédure) répond clairement à la demande
Dernière édition par Jicehel le Lun 27 Avr 2015 - 17:59, édité 1 fois | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Lun 27 Avr 2015 - 17:31 | |
| | |
|
| |
mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: Comment dessiner une ellipse ? Lun 27 Avr 2015 - 18:27 | |
| il est possible de faire une ellipse en appliquant un facteur d'échelle sur un des axes du cercle mais cela ne vaut que si tu n'as pas d'exigence particulière quant à la géométrie de ton ellipse
| |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Comment dessiner une ellipse ? Lun 27 Avr 2015 - 18:54 | |
| @ ygeronimi Ça prouve que parmi ceux qui lisent ma prose, il y a au moins un qui suit avec intérêt. Merci ygeronimi, j’ai corrigé là-haut, mais détrompe toi : ce n’est pas moi le responsable à l’éducation nationale , quant à l’éducation internationale, je crois que je suis pour quelque chose ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Comment dessiner une ellipse ? Mar 28 Avr 2015 - 17:57 | |
| Bon, on peut tracer des ellipses (et accessoirement des cercles) à l’aide de la gdi32.dll qui se trouve nécessairement sur votre PC. L'appel de la fonction Ellipse se fait comme suit : - Code:
-
ret% = dll_call5("Ellipse",hDC%,x1%,y1%,x2%,y2%)
Voici comment faire - Code:
-
rem ============================================================================ rem Fonction Ellipse de gdi32.dll rem pour dessiner une ellipse (et accessoirement un cercle) rem ============================================================================ dim hDC%,x1%,y1%,x2%,y2%, ret% hDC% = handle_canvas(0) : ' Handle_canvas de la FORM sur laquelle on dessine ' On définit un rectangle dans lequel sera placé l'ellipse ' Pour dessiner un cercle, il faut donc faire un carré x1% = 10 : y1% = 100 : ' Coordonnées du point haut/gauche du rectangle x2% = 300 : y2% = 200 : ' Coordonnées du point bas/droit du rectangle dll_on "gdi32.dll" ret% = dll_call5("Ellipse",hDC%,x1%,y1%,x2%,y2%) : ' une ellipse ret% = dll_call5("Ellipse",hDC%,200,200,300,300) : ' un cercle
dll_off message "Terminé" rem ============================================================================
Dernière édition par papydall le Mer 19 Aoû 2015 - 1:36, édité 2 fois | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Comment dessiner une ellipse ? Mar 28 Avr 2015 - 18:10 | |
| Très intéressant papydall, mais... (il y a toujours un mais comme tu dis), avec la gdi32.dll on ne sait pas (enfin, moi je ne sais pas) moduler la couleur et l'épaisseur du trait, les fonctions 2d_pen_width et 2d_pen_color sont inopérantes ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Comment dessiner une ellipse ? Mer 29 Avr 2015 - 2:13 | |
| Moi non plus, je ne sais pas comment moduler la couleur et l'épaisseur du trait. Par contre je sais que la fonction SetPixel de la gdi32.dll permet d'allumer un pixel avec la couleur transmise en paramètre. Le problème c'est que je ne sais pas quelle constante attribuée à couleur. Bon, un petit code vaut mieux que 1000 lignes de prose de Papydall - Code:
-
dim hDC%,a%,x%,y%,couleur%,ret% hDC% = handle_canvas(0) : ' Handle_canvas de la FORM sur laquelle on dessine ' couleur% = quoi ? dll_on "gdi32.dll" for a% = 100 to 10000 x% = 250+200*cos(a%/3) y% = 220+200*sin(a%/3.5) ret% = dll_call4("SetPixel",hDC%,x%,y%,couleur%) next a%
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 29 Avr 2015 - 5:44 | |
| @ Papydall, Je reviens un peu en arrière. Ma petite remarque concernait la formulation de jicehel et non tes explications. Si tu suis un peu l' actualité française, nous avons récemment entendu les nouvelles appellations de certaines activités scolaires, pondu par un hurluberlu de notre administration. Et ce, soit disant, pour une simplification et une meilleur compréhension et communication. Y a des baffes qui se perdent ! ...et je suis gentil . Aller, stop, j' arrête de polluer ce sujet...je sors... | |
|
| |
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 1:07 | |
| salut je remets au gout du jour ce code un cercle et plus - Code:
-
' escape pour arreter dim x0,y0,r,Px,Py,j%,n%,Pi,a,a0,a1,h,w Pi = 4*ATN(1) w=1 rem coordonnées du centre x0=750 Y0=500 width 0,1500 height 0,1000 rem rayon r=500
rem nombre de côtés n%=80 a1 =( 2*Pi/n%)/w: ' angle de rotation de chaque côté
rem angle de début a0=1
for h = 1 to 120 Px = r * Cos(a0) + x0 Py = r/w * Sin(a0) + y0 2D_poly_from px,py a = a0 For j% = 0 To n% a = a + a1 Px = r*Cos(a) + x0 Py = r/w*Sin(a) + y0 2D_poly_to Px, Py Next j% wait 100 cls a0 = a0 + 1 w=w+0.1 next h END | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 7:22 | |
| Bravo Sergeauze | |
|
| |
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 15:24 | |
| salut Ce code est le fruit de la collaboration habituelle sur le forum J’avais demandé comment dessiner un polygone Jack à donné sa solution, jl35 l'a améliorée, puis j'y ai ajouté ma touche, le mouvement et la perspective; on peut faire varier n% le nombre de cotes Le lien du fil de discussion de l'époque https://panoramic.1fr1.net/t818-un-fil-a-la-patte | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 16:11 | |
| Oui c'est bien quand il y a échanges. On peut profiter des idées, progresser et avoir d'autres idées suites aux échange (comme Klaus cette nuit avec l'idée de Papydall pour les espaces dans la pile ) | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 18:12 | |
| … Et pour quelques modifications minimes, on part dans un autre univers, très loin de l’ellipse de départ. - Code:
-
dim x0,y0,r,Px,Py,j%,n%,Pi,a,a0,a1,h,w Pi = 4*ATN(1) w=1 rem coordonnées du centre x0=750 Y0=500 width 0,1500 height 0,1000 rem rayon r=500 caption 0,"<CLICK> pour arrêter" rem nombre de côtés n%=80 a1 =( 2*Pi/n%)/w: ' angle de rotation de chaque côté
rem angle de début a0=1 color 0,0,0,0 : 2d_pen_color 255,255,0 for h = 1 to 120 cls Px = r * Cos(a0) + x0 Py = r/w * Sin(a0) + y0 2D_poly_from px,py a = a0 For j% = 0 To n% a = a + a1 Px = r*Cos(a) + x0 Py = r/w*Sin(a) + y0 2D_poly_to Px, Py : 2D_poly_to Py, Px/2 : 2D_poly_to Py, Px/4 if scancode <> 0 then terminate Next j% pause 50 a0 = a0 + 1 w=w+0.1 next h END
| |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 19:00 | |
| Très chouette Papydall (pas le temps de coloriser, je rentre chez moi .... ) | |
|
| |
jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 19:04 | |
|
Dernière édition par jimx78 le Lun 11 Mai 2015 - 19:17, édité 1 fois | |
|
| |
jimx78
Nombre de messages : 241 Age : 33 Localisation : Yvelines Date d'inscription : 24/05/2010
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 19:05 | |
|
Dernière édition par jimx78 le Lun 11 Mai 2015 - 19:18, édité 1 fois | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 11 Mai 2015 - 19:10 | |
| Je dirai même plus, c' est joli... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 22:25 | |
| Bon j'ai eu le temps de faire ma colorisation de ta courbe comme j'aime bien ^^ - Code:
-
dim x0,y0,r,Px,Py,j%,n%,Pi,a,a0,a1,h,w Pi = 4*ATN(1) w=1 x0=750 : Y0=500 : ' coordonnées du centre width 0,1500 : height 0,1000 r=500 : ' rayon caption 0,"<CLICK> pour arrêter" n%=160 : ' nombre de côtés a1 =( 2*Pi/n%)/w : ' angle de rotation de chaque côté a0=1 : ' angle de début color 0,0,0,0 : 2d_pen_color 255,255,0: 2d_pen_width 20 for h = 1 to 120 cls Px = r * Cos(a0) + x0 : Py = r/w * Sin(a0) + y0 2D_poly_from px,py a = a0 For j% = 0 To n% a = a + a1 : Px = r*Cos(a) + x0 : Py = r/w*Sin(a) + y0 2D_pen_color abs(Px - x0) /2, abs(Py - y0)/2, abs(75-j%)*3 2D_poly_to Px, Py : 2D_poly_to Py, Px/2 : 2D_poly_to Py, Px/4 if scancode <> 0 then terminate pause 50 Next j% pause 150 a0 = a0 + 1 : w=w+0.1 next h END | |
|
| |
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 22:30 | |
| Mais qu'ont_il fait de mon ellispe | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Comment dessiner une ellipse ? Lun 11 Mai 2015 - 22:45 | |
| IsontouKacé !! mdr | |
|
| |
Contenu sponsorisé
| Sujet: Re: Comment dessiner une ellipse ? | |
| |
|
| |
| Comment dessiner une ellipse ? | |
|