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

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

sztruks's gravatar image

sztruks
3681413
Taux d'acceptation : 25%

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

touhami's gravatar image

touhami
9.7k410


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:
Lien permanent

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

christophe-poulain's gravatar image

christophe-poulain
8661727
Taux d'acceptation : 37%

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

touhami's gravatar image

touhami
9.7k410

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.7k410
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
(dés)activer 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

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.