Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Pstricks : courbe passant par des points suivant des tangentes

100 views
Skip to first unread message

François

unread,
Aug 28, 2007, 12:10:49 PM8/28/07
to
Bonjour tout le monde.

Je sais qu'avec la commande \pscurve (du package pstricks) on peut faire
une courbe bien lisse qui passe par des points donnés. Cette commande
est bien pratique. Mais je voulais savoir s'il existe une commande qui
permet :
1) de tracer une courbe bien lisse passant par des points donnés (comme
\pscurve)
2) et en plus de le faire suivant une pente (ou coefficient directeur)
donnée.

Je sais qu'avec la commande \psbezier on peut faire quelque chose dans
ce genre. Mais il faut bricoler et c'est assez lourd. Pour l'instant
j'utilise geogebra pour faire ma courbe visuellement, puis il y a moyen
de faire un export en pstricks. Mais ça aussi c'est un peu pénible.

J'aimerais vraiment trouver une commande pstricks (soit qui existe soit
qui est définie).

Merci d'avance.


François

PascalG

unread,
Aug 28, 2007, 1:01:37 PM8/28/07
to

bonjour,
voici la macro que j'utilise

\usepackage{ifthen}
\usepackage{fp}
\usepackage{pstricks-add}
%% macro trace tangente
\def\traceTangente(#1,#2,#3,#4){%
\ifthenelse{\lengthtest{#4pt>0pt}}{\FPeval\DemiTangenteV{(#3)*(#4)}
\FPeval\TangentXa{(#1)-(#4)}
\FPeval\TangentXb{(#1)+(#4)}
\FPeval\TangentYa{(#2)-(\DemiTangenteV)}
\FPround\TangentYa\TangentYa{3}
\FPeval\TangentYb{(#2)+(\DemiTangenteV)}
\FPround\TangentYb\TangentYb{3}
\psline{<->}(\TangentXa,\TangentYa)(\TangentXb,\TangentYb)}{}}
\makeatletter
%% macro interpolation
\def\Interpolation(#1,#2,#3)(#4,#5,#6){%
\edef\PolyInterp{(x+(-1)*(#4))^2*((1+(-2)*(x+(-1)*(#1))*(#1+(-1)*
(#4))/((#1+(-1)*(#4))^2))*#2+(x+(-1)*(#1))*#3)/((#1+(-1)*(#4))^2)+(x+
(-1)*(#1))^2*((1+(-2)*(x+(-1)*(#4))*(#4+(-1)*(#1))/((#1+(-1)*(#4))^2))
*#5+(x+(-1)*(#4))*#6)/((#1+(-1)*(#4))^2)}%
\psplot[algebraic=true]{#1}{#4}{\PolyInterp}}
%% la macro principale
\def\HermiteDDL(#1,#2,#3,#4){\def\Hermite@xa{#1}\def\Hermite@ya{#2}\def
\Hermite@za{#3}
\psdot(#1,#2)
\traceTangente(#1,#2,#3,#4)\Hermite@next}

\def\Hermite@next{\@ifnextchar ({\Hermite@job}{\Hermite@end}}

\def\Hermite@job(#1,#2,#3,#4){%
\psdot(#1,#2)
\Interpolation(\Hermite@xa,\Hermite@ya,\Hermite@za)(#1,#2,#3)
\def\Hermite@xa{#1}\def\Hermite@ya{#2}\def\Hermite@za{#3}
\traceTangente(#1,#2,#3,#4)\Hermite@next}
\def\Hermite@end{}

\makeatother

on l'utilise en faisant

\HermiteDDL(x1,y1,p1,l1)(x2,y2,p2,l2) etc.
(xi,yi) sont les coordonnées du i-ème point, pi le coefficient
directeur en ce point et li l'"étendue" en abscisse de la tangente
(faire 0 pour ne pas l'afficher)

ps : les xi doivent être par ordre croissant!

en espérant que ça puisse servir

davantage d'explications ici:
http://mathsaulyceeddl.free.fr/spip.php?rubrique63

François

unread,
Aug 29, 2007, 12:51:20 AM8/29/07
to
PascalG a écrit :

> bonjour,
> voici la macro que j'utilise
> ...

> en espérant que ça puisse servir

Oh oui merci beaucoup. J'en déduis donc qu'il n'existe pas de commande
qui fasse cela dans les package pstricks et compagnie. C'est dommage,
car ce genre de macro est très pratique pour un prof du secondaire.
(petit signal pour les concepteurs de packages ;-)).

Merci à vous Pascal.

Si quelqu'un veut proposer sa macro, qu'il n'hésite pas. Je me demande
si il n'est pas possible de faire en sorte de ne pas utiliser le package
"fp". Faire une macro dans l'esprit pstricks, où les calculs sont faits
par postscript.

A bientôt.

François

PS : Pascal, je trouve votre site super classe. Bravo.

0 new messages