Animation d'une figure

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
boobamane
Utilisateur confirmé
Utilisateur confirmé
Messages : 74
Inscription : dimanche 22 janvier 2012, 13:47

[Résolu] Animation d'une figure

Message non lu par boobamane »

Bonjour,

J'ai une figure générée avec Géogébra que j'aimerais animer.
Le point M se déplaçant sur la bissectrice, tout en conservant l'égalité des distances
AM et MB.

Merci d'avance.

Code : Tout sélectionner

import graph; 
import patterns;
size(11 cm);
real labelscalefactor = 0.5; /* changes label-to-point distance */
pen dps = linewidth(0.7) + fontsize(10); defaultpen(dps); /* default pen style */
pen dotstyle = black; /* point style */
real xmin = -3.32, xmax = 15.24, ymin = -3.27, ymax = 3.62;  /* image dimensions */
pen verte = rgb(0,0.60,0);
add("hachures1",hatch(H=1mm,dir=SE,verte));
add("hachures1",hatch(H=1mm,dir=NW,verte));
/* codage des angles */
filldraw((4.95,-1.86)--(5.08,-1.53)--(4.75,-1.41)--(4.63,-1.73)--cycle,pattern("hachures1"), .9verte);
filldraw((4.75,1.41)--(5.08,1.53)--(4.95,1.86)--(4.63,1.73)--cycle, pattern("hachures1"), .9verte);
filldraw(arc((0,0),0.5,0,20.56)--(0,0)--cycle, pattern("hachures1"), .9verte);
filldraw(arc((0,0),0.5,-20.56,0)--(0,0)--cycle, pattern("hachures1"), .9verte);
 /*figures */
draw(shift((0,0))*scale(0.18)*(expi(pi/4)--expi(5*pi/4)^^expi(3*pi/4)--expi(7*pi/4))); /* Marquage du point O */
draw((0,0)--(8,3), linewidth(2));
draw((0,0)--(8,-3), linewidth(2));
draw((0,0)--(9.79,0), linewidth(2) + red); 

draw(shift((5.28,0))*scale(0.18)*(expi(pi/4)--expi(5*pi/4)^^expi(3*pi/4)--expi(7*pi/4))); /* Marquage du point M */
draw(shift((4.63,1.73))*scale(0.18)*(expi(pi/4)--expi(5*pi/4)^^expi(3*pi/4)--expi(7*pi/4))); /* Marquage du point a */
draw(shift((4.63,-1.73))*scale(0.18)*(expi(pi/4)--expi(5*pi/4)^^expi(3*pi/4)--expi(7*pi/4))); /* Marquage du point B */
draw((4.63,1.73)--(5.28,0), linewidth(2) + linetype("4 4")); /* Segment AM je le note mal */
draw((5.03,0.94)--(4.84,0.87), linewidth(2) + linetype("4 4"));/* Codage sur le segment AM */
draw((5.06,0.86)--(4.87,0.79), linewidth(2) + linetype("4 4"));/* Codage sur le segment AM */
draw((5.28,0)--(4.63,-1.73), linewidth(2) + linetype("4 4")); /* Segment MB je le note mal */
draw((5.06,-0.86)--(4.87,-0.79), linewidth(2) + linetype("4 4")); /* Codage sur  BM */
draw((5.03,-0.94)--(4.84,-0.87), linewidth(2) + linetype("4 4")); /* Codage sur  BM */

//draw(arc((0,0),0.5,0,20.56), verte);
//draw(arc((0,0),0.41,0,20.56), verte);
//draw(arc((0,0),0.5,-20.56,0), verte);
//draw(arc((0,0),0.41,-20.56,0), verte);

/* Noms des Points */
label("$O$", (-0.33,-0.12), NE * labelscalefactor);
label("$M$", (5.36,0.18), NE * labelscalefactor);
label("$A$", (4.58,1.93), NE * labelscalefactor); 
label("$B$", (4.3,-2.1), NE * labelscalefactor); 
Dernière modification par boobamane le mardi 17 janvier 2017, 00:05, modifié 1 fois.
OG
Modérateur honoraire
Modérateur honoraire
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Animation d'une figure

Message non lu par OG »

Bonsoir

Je ne peux que répondre partiellement.
En enlevant dans le code les parties non essentielles (hachures, angle, double trait),
il faudrait déjà faire le code asymptote où partant d'un point M sur la bissectrice, la suite des calculs pour A et B se fait selon les coordonnées de M, au sens M.x, M.y.
Ainsi si on modifie juste les coordonnées de M, le reste suit. Ensuite viennent les améliorations (marquage des angles). In fine on peut alors construire une animation.

Sinon pour être sûr, M se déplace sur la bissectrice et MA perpendiculaire en A la droite supérieure du secteur angulaire (et du même acabit pour B) ?

Cordialement
O.G.
boobamane
Utilisateur confirmé
Utilisateur confirmé
Messages : 74
Inscription : dimanche 22 janvier 2012, 13:47

Re: Animation d'une figure

Message non lu par boobamane »

Bonsoir,

Merci pour les astuces.
chellier
Modérateur honoraire
Modérateur honoraire
Messages : 355
Inscription : samedi 25 juillet 2009, 12:25
Localisation : Le Creusot

Re: Animation d'une figure

Message non lu par chellier »

boobamane a écrit :Bonjour,

J'ai une figure générée avec Géogébra que j'aimerais animer.
Le point M se déplaçant sur la bissectrice, tout en conservant l'égalité des distances
AM et MB.

Merci d'avance.
Bonjour,
Avec un peu de retard...

J'ai préféré repartir de zéro pour créer la figure, GeoGebra c'est bien, mais c'est quand même plus clair de produire directement le code.
Je n'ai pas reproduit les hachures, il faudrait remplacer les "Fill" par des "pattern".

Code : Tout sélectionner

import geometry;
import animate;
settings.tex="pdflatex";
settings.outformat="pdf";

size(11cm);

pen p = linetype("4 4"); // pointillés plus petits
marker croix = marker(scale(4)*cross(4),linewidth(bp)); // croix des points

transform ref = reflect(Ox); // symétrie axiale par rapport à (Ox)
point O = (0,0), A = (3,1), B = ref*A;
line om = line(O,false,(1,0)), // demi-droite (false en O)
     oa = line(O,false,A), ob = line(O,false,B);

animation MonAnim;

markangle(B,O,A,bp+deepgreen,Fill(palegreen));
draw("$O$",O,1.5W,croix);
draw(om, bp+red);
draw(oa^^ob,linewidth(bp));
draw((0,-2)--(5,2),invisible); // pour que la figure ait des dimensions fixes

MonAnim.add();

// jouer sur l'incrémentation de i et delay pour la fluidité et le poids du fichier
for(real i=.6; i<4.5; i=i+.05) {
  save();
  point M=relpoint(Ox,i), A=projection(oa)*M, B=projection(ob)*M;
  draw(A--M--B,p+bp,StickIntervalMarker(2,2,linewidth(bp)));
  markrightangle(O,A,M,2bp+deepgreen,Fill(palegreen));
  markrightangle(M,B,O,2bp+deepgreen,Fill(palegreen));
  draw("$A$",A,1.5N,croix);
  draw("$B$",B,1.5S,croix);
  draw("$M$",M,1.5NE,croix);
  MonAnim.add();
  restore();
}

erase(); // pour éviter les "décalages"
//MonAnim.movie(); // pdf multipage
label(MonAnim.pdf("controls",delay=100)); // pdf avec boutons de contrôle
En fichier joint, le pdf produit (à ouvrir avec Acrobat Reader pour pouvoir utiliser les boutons).

Christophe
Pièces jointes
animBissectrice.pdf
À ouvrir avec Acrobat reader pour voir l'animation
(161.36 Kio) Téléchargé 497 fois
boobamane
Utilisateur confirmé
Utilisateur confirmé
Messages : 74
Inscription : dimanche 22 janvier 2012, 13:47

Re: Animation d'une figure

Message non lu par boobamane »

Merci d'avoir repris.
C'est exactement ce que je voulais faire. Merci.
OG
Modérateur honoraire
Modérateur honoraire
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: [Résolu] Animation d'une figure

Message non lu par OG »

Bonsoir

J'ai répondu à la question posée ailleurs et après : comment inclure cette animation dans un fichier LaTeX.
C'est ici
http://asy.gmaths.net/forum/topic418.html

O.G.