Je bute depuis fort longtemps sur le problème suivant en METAPOST: comment connaître le temps du point donné d’un segment placé selon un paramètre métrique? J’ai lu et pratiqué plusieurs manuels (notamment celui de MP et MP by doing) et sites (notamment ce post pourtant explicite de TeX SE et je pense que ma formation trop peu scientifique m’empêche de bien comprendre ce point précis.

Dans le MWE suivant (sous ConTEXt mais le code peut être testé sous metapost ou LaTeX en changeant les préambules), je souhaiterais donc pouvoir déterminer le temps de chacun des points de la courbe répartis à intervalles métriques réguliers

% !TEX context
\starttext
\startMPpage
path p;
p:= (0,0){right} .. (2cm,4cm){up} .. (4cm,5cm){right} .. (5cm,6cm){up} .. (8cm,7cm){right};
draw p;
numeric maximum;
maximum:= 10*floor((arclength p)/10);
marge:= (arclength p - maximum)/2;
pair rep[][];
path rep[];
numeric rep[][][];
for i:=0 step 10 until maximum:
rep[i]0:= point (i+marge) on p;
drawdot rep[i]0 withcolor red
withpen pencircle scaled 1;
%valeur rep[i]0[1] correspondant au time de rep[i]0 dans p?
endfor;
\stopMPpage
\stoptext
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Posée 25 Aoû '21, 10:47

sztruks's gravatar image

sztruks
3781413
Taux d'acceptation : 21%

Modifiée 25 Aoû '21, 17:54

touhami's gravatar image

touhami
9.8k410


Est-ce que cela répond à votre question ?

% !TEX lualatex
\documentclass{standalone}
\usepackage{luamplib}
\everymplib{beginfig(1);}
\everyendmplib{endfig;}
\begin{document}
\begin{mplibcode}
path P;
P = (0,0){right} .. (2cm,4cm){up} .. (4cm,5cm){right} .. (5cm,6cm){up} .. (8cm,7cm){right};
draw P withpen pencircle scaled 2pt withcolor .7 white;
s = 5mm;
for t=0 step s until arclength P:
drawdot point arctime t of P of P withpen pencircle scaled 4pt withcolor red;
draw (point arctime t of P of P)--(point arctime t of P of P+direction arctime t of P of P);
endfor
\end{mplibcode}
\end{document}
% Local Variables:
% TeX-engine: luatex
% End:
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien permanent

Publiée 25 Aoû '21, 23:22

christophe-poulain's gravatar image

christophe-poulain
8661827
Taux d'acceptation : 37%

Modifiée 25 Aoû '21, 23:57

touhami's gravatar image

touhami
9.8k410

Cela répond bien à ma question, la fonction point of semble être la pièce de lego qui manquait à mon édifice --- et elle est invoquée dans le post de TeX SE que j’avais joint sans que j’y prête attention…

Je l’utilise pourtant fréquemment, mais pour désigner un point, je ne la percevais pas comme un opérateur…

Serait-il possible de rajouter des parenthèses dans le point arctime t of P of P+direction arctime t of P of P pour que comprenne mieux comment elle se décompose?

(26 Aoû '21, 11:48) sztruks sztruks's gravatar image
1

point(arctime t of P) of P

Désolé pour le retard...

(30 Aoû '21, 21:58) christophe-poulain christophe-poulain's gravatar image

En bref. C'est comme un objet se déplace le long d'un trajectoire. Sa position géographique à chaque instant t, est donnée par les coordonnées (x(t),y(t)).

Mathématiquement. Le chemin P est une courbe paramétrée plane. Il s'agit donc d'une application P d'un intervalle de R dans R2, c'est-à-dire que tout point M(x,y) de P est définie comme étant M(t)=(x(t),y(t)).

Ici, on a

(0,0) =M(0)=M(x(0),y(0)), (2cm,4cm)=M(1)=M(x(1),y(1)), (4cm,5cm)=M(2)=M(x(2),y(2)), (5cm,6cm)=M(3)=M(x(3),y(3)), (8cm,7cm)=M(4)=M(x(4),y(4))

On remarque qu'on a x(0)=0, x(1)=2, x(2)=4, x(3)=5 et x(4)=8.

De même, on a y(0)=0, y(1)=4, y(2)=5, y(3)=6 et y(4)=7.

Un point M de P, par exemple entre les deux points (4cm,5cm) et (5cm,6cm) correspond à une valeur de t dans l'intervalle [2,3].

Dans chacun des intervalles [0,1], [1,2], [2,3], [3,4] l'application x (respectivement y) peut avoir une relation différente, disons x1 dans [0,1], x2 dans [1,2], etc.

Lien permanent

Publiée 25 Aoû '21, 17:52

touhami's gravatar image

touhami
9.8k410
Taux d'acceptation : 51%

Modifiée 25 Aoû '21, 17:56

Merci pour cette intéressante explication mathématique. Elle ne suffit toutefois pas pour résoudre mon problème: trouver la formule me donnant accès au temps exact de mes points, car un certain nombre de fonctions reposent sur cette valeur, par exemple tracer des tangentes.

(25 Aoû '21, 19:34) sztruks sztruks's gravatar image
1

@sztruks Si j'ai bien compris la valeur de t correspondante au point rep[i]0:= point (i+marge) on p est (i+marge).

(25 Aoû '21, 21:56) touhami touhami's gravatar image

Je ne suis pas sûr: il me semble, en ce cas, qu’il suffit que marge ait une valeur supérieure à 4 (pt) pour que le point (i+marge) ait un temps supérieur au temps du dernier point de la courbe…

(26 Aoû '21, 12:03) sztruks sztruks's gravatar image

@sztruks. Essayer de tester avec pour voir ce que se passe :

drawdot point 0 of p withcolor red withpen pencircle scaled 2; drawdot point 4 of p withcolor red withpen pencircle scaled 2; drawdot point -1 of p withcolor blue withpen pencircle scaled 2; drawdot point 5 of p withcolor blue withpen pencircle scaled 2;

(26 Aoû '21, 13:32) touhami touhami's gravatar image
Votre réponse
[Masquer l'aperçu]

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Mots-clés de la question :

×8

Question posée : 25 Aoû '21, 10:47

Question vue : 3,609 fois

Dernière mise à jour : 30 Aoû '21, 21:58

C'est votre première visite ici ? Consultez la FAQ !

×