Page 1 sur 1

[Résolu] Animation d'une figure

MessagePosté: Lundi 12 Décembre 2016, 23:14
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);

Re: Animation d'une figure

MessagePosté: Mardi 13 Décembre 2016, 22:10
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.

Re: Animation d'une figure

MessagePosté: Dimanche 18 Décembre 2016, 23:16
par boobamane
Bonsoir,

Merci pour les astuces.

Re: Animation d'une figure

MessagePosté: Mardi 27 Décembre 2016, 15:19
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

Re: Animation d'une figure

MessagePosté: Mardi 17 Janvier 2017, 00:03
par boobamane
Merci d'avoir repris.
C'est exactement ce que je voulais faire. Merci.

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

MessagePosté: Jeudi 26 Janvier 2017, 20:37
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.