épitrochoide

Règles du forum
ATTENTION ! Il est demandé de ne déposer dans ce forum que des exemples en langage Asymptote
  • finalisés
  • que l'on pense intéressants et optimisés
  • et qui se rapportent au thème du forum.
Si certains exemples déposés donnent lieu à de nombreuses modifications, ils seront déplacés et remplacés par un nouveau sujet dans ce forum avec la ou les meilleures propositions.
Pour les demandes d'aide ... il y a un forum spécifique !
zariski
Messages : 128
Enregistré le : dim. 30 sept. 2012, 18:50

épitrochoide

Message non lu par zariski » mer. 10 janv. 2018, 09:20

Bonjour !
Je me suis amusé à travailler un exemple de GM.
Par contre j'ai quelques artefacts que je ne m'explique pas.
Une idée peut-être ?
Merci

Voici le code : pardonnez moi mais je galère avec les balises ...

import geometry;
import animate;

settings.tex="pdflatex";
settings.outformat="pdf";


usepackage("xcolor");

unitsize(0.8cm);

real x_min=-4,
x_max=4,
y_min=-4,
y_max=4,
//----- Les unités sur chaque axe ------------------------------
k=1, // Nb de cm par unité sur Ox
h=1; // Nb de cm par unité sur Oy

//------- Axe des x -----------------------------------------------
draw((x_min,0)--(x_max,0),1bp+black,arrow=Arrow(size=2mm)); // Axe des x
for(real i=0; i<x_max; i=i+1){
draw((i,-0.1)--(i,0.1),0.5bp+black); // tirets positifs sur Ox
}

for(real i=0; i>x_min; i=i-1){
draw((i,-0.1)--(i,0.1),0.5bp+black); // tirets négatifs sur Ox
}

for(int k=1; k<=4; k=k+1){
label(format("\scriptsize %i",k),(k,-0.3),gray(0.5));//valeurs positives sur Ox
}
for(int k=1; k<=4; k=k+1){
label(format("\scriptsize %i",-k),(-k,-0.3),gray(0.5));//valeurs negatifs sur Ox
}
//------ Axe des x ---------------------------------------------


//------- Axe des y -----------------------------------------------
draw((0,y_min)--(0,y_max),1bp+black,arrow=Arrow(size=2mm)); // axe des y
for(real k=0; k<y_max; k=k+1){
draw((-0.1,k)--(0.1,k),0.5bp+black); // tirets positifs sur Oy
}

for(real k=0; k>y_min; k=k-1){
draw((-0.1,k)--(0.1,k),0.5bp+black); // tirets négatifs sur Oy
}

for(int k=1; k<=4; k=k+1){
label(format("\scriptsize %i",k),(-0.3 ,k),gray(0.5));//valeurs positives sur Ox
}
for(int k=1; k<=4; k=k+1){
label(format("\scriptsize %i",-k),(-0.3 , -k),gray(0.5));//valeurs negatifs sur Ox
}
//-------- Axe des y ----------------------------------------------


animation A;
real R=3, r=1,k=2;

pair pO=(0,0), pA=(R,0), pC=(R+r,0), pB=(R+k*r,0), pM, pN, pD, pE;
path Epitrochoide;

draw(scale(R)*unitcircle,1bp+blue);
label(scale(0.6)*("\fcolorbox{black}{gray!10}{R=3, r=1, k=2}"),
(3,3),N);

for(int t=0; t<=360; t+=2) {
save();

pM=rotate(t,pO)*pA;

pD=rotate(t,pO)*pC;

pE=rotate(t,pO)*pB;

pN=rotate(R*t/r,pD)*pE;

Epitrochoide=Epitrochoide..pN;
draw(circle(pD,r));
draw(Epitrochoide,0.5bp+red);
draw(pD--pN,1bp+black);
dot(pD,3bp+black);
dot(pN,3bp+black);
A.add();
restore();
}

erase();

A.movie();
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

OG
V.I.P.
V.I.P.
Messages : 134
Enregistré le : dim. 7 mars 2010, 22:27

Re: épitrochoide

Message non lu par OG » mer. 10 janv. 2018, 10:34

Bonjour

C'est le coup du chapeau mexicain... Pour construire par ajout successif un `path`, il faut le définir d'abord comme `guide`,
puis l'affichage fait que le `guide` est transformé en `path` (grosso modo, un système linéaire résolu pour faire un beau chemin C^2).
Si `Epitrochoide` est défini comme `path`, à chaque étape on ajoute un point au chemin `path`, seul le nouveau morceau "avant-dernier point
et dernier point" est calculé pour le raccord C^2 et in fine il y a des artefacts...
Bref il suffit de mettre

Code : Tout sélectionner

guide Epitrochoide;
à la place
de

Code : Tout sélectionner

path Epitrochoide;
O.G.

zariski
Messages : 128
Enregistré le : dim. 30 sept. 2012, 18:50

Re: épitrochoide

Message non lu par zariski » mer. 10 janv. 2018, 13:48

Merciiiiii beaucoup !
Faut dire que cette notion de "guide" m'échappe un peu ...
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

OG
V.I.P.
V.I.P.
Messages : 134
Enregistré le : dim. 7 mars 2010, 22:27

Re: épitrochoide

Message non lu par OG » mer. 10 janv. 2018, 23:14

zariski a écrit :
mer. 10 janv. 2018, 13:48
Merciiiiii beaucoup !
Faut dire que cette notion de "guide" m'échappe un peu ...
D'où la présence de guides sur ce forum :)

O.G.

Répondre