Courbe passant par des points suivant des tangentes
-
- Utilisateur éprouvé
- Messages : 856
- Inscription : jeudi 21 septembre 2006, 00:14
- Localisation : Antony
Courbe passant par des points suivant des tangentes
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.
J'attends vos réponses avec impatience.
A bientôt.
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.
J'attends vos réponses avec impatience.
A bientôt.
-
- Utilisateur chevronné
- Messages : 1367
- Inscription : dimanche 30 juillet 2006, 10:04
- Localisation : Alsace
-
- Utilisateur éprouvé
- Messages : 856
- Inscription : jeudi 21 septembre 2006, 00:14
- Localisation : Antony
-
- Modérateur honoraire
- Messages : 1839
- Inscription : mercredi 01 juin 2005, 18:39
- Localisation : Un peu plus à l'Ouest
Il n'est pas possible de faire "simplement" (càd sans programmer de macro) ce que tu demandes avec Pstricks. Maintenant, peut-être qu'une telle macro a déjà été programmé et qu'il faut trouver un package l'implémentant. Je ne le connais pas.
François D a voulu te dire que Metapost, lui, le fait (mais du coup c'est une technique complètement différente pour faire une figure).
Sinon, j'ai modifié un peu Geogebra pour qu'il fasse ce genre de chose et exporte le code pstricks correspondant. Je posterai la version en question sur le post que j'avais déjà fait sur Geogebra il y a un an maintenant. En attendant, je peux la joindre à ce message si tu veux, je modifierai plus tard.
François D a voulu te dire que Metapost, lui, le fait (mais du coup c'est une technique complètement différente pour faire une figure).
Sinon, j'ai modifié un peu Geogebra pour qu'il fasse ce genre de chose et exporte le code pstricks correspondant. Je posterai la version en question sur le post que j'avais déjà fait sur Geogebra il y a un an maintenant. En attendant, je peux la joindre à ce message si tu veux, je modifierai plus tard.
Pas de questions en MP
La calculatrice, c'est comme Linux, c'est de la merde !
La calculatrice, c'est comme Linux, c'est de la merde !
-
- Utilisateur éprouvé
- Messages : 856
- Inscription : jeudi 21 septembre 2006, 00:14
- Localisation : Antony
Bonjour Tryphon.
Oui j'aimerais bien voir ça, si cela ne te dérange pas.
Sinon, quant à l'idée de faire sa propre macro, j'y avais pensé en utilisant \psbezier. Mais ce qui me gêne, c'est que les arguments #1 (pour les coordonnées des points) et #2 (pour les pentes) seront forcément composés de plusieurs "sous arguments". Et comment dire à LaTeX de prendre qu'un morceau de #1 (ou #2) ? Je ne sais pas, hélas !
Sinon je peux je peux me limiter à trois points et faire une commande du style \macommande#1#2#3#4#5#6 avec #1 #2 #3 les coordonnées des trois points et #4 #5 #6 les trois pentes. Mais ça limite la commande à trois points. C'est dommage.
Oui j'aimerais bien voir ça, si cela ne te dérange pas.
Sinon, quant à l'idée de faire sa propre macro, j'y avais pensé en utilisant \psbezier. Mais ce qui me gêne, c'est que les arguments #1 (pour les coordonnées des points) et #2 (pour les pentes) seront forcément composés de plusieurs "sous arguments". Et comment dire à LaTeX de prendre qu'un morceau de #1 (ou #2) ? Je ne sais pas, hélas !
Sinon je peux je peux me limiter à trois points et faire une commande du style \macommande#1#2#3#4#5#6 avec #1 #2 #3 les coordonnées des trois points et #4 #5 #6 les trois pentes. Mais ça limite la commande à trois points. C'est dommage.
-
- Modérateur honoraire
- Messages : 1839
- Inscription : mercredi 01 juin 2005, 18:39
- Localisation : Un peu plus à l'Ouest
Tiens ! Tu cliques sur l'icone en forme de courbe plus moche que les autres (c'est moi qui l'ai dessiné ) et tu rentres les points par paires : un point par lequel passe ta courbe, un point dirigeant la tangente, etc. Quand t'as fini, tu recliques sur le dernier point (celui dirigeant la tangente au dernier point de la courbe).
Après t'es mûr pour exporter en Pstricks (Fichier/Exporter la figure, choisis Pstricks dans la liste).
Le code est pas forcément super propre, désolé, je vais arranger ça petit à petit. Pour information, la partie "Export" est en grande partie dûe à Loic Lecoq et est disponible dans la version officielle de développement de Geogebra. Les trucs qui font que son code déconne parfois ont été rajoutés par moi.
Après t'es mûr pour exporter en Pstricks (Fichier/Exporter la figure, choisis Pstricks dans la liste).
Le code est pas forcément super propre, désolé, je vais arranger ça petit à petit. Pour information, la partie "Export" est en grande partie dûe à Loic Lecoq et est disponible dans la version officielle de développement de Geogebra. Les trucs qui font que son code déconne parfois ont été rajoutés par moi.
- Pièces jointes
-
- geogebra.jar
- (4.57 Mio) Téléchargé 727 fois
Pas de questions en MP
La calculatrice, c'est comme Linux, c'est de la merde !
La calculatrice, c'est comme Linux, c'est de la merde !
-
- Utilisateur éprouvé
- Messages : 856
- Inscription : jeudi 21 septembre 2006, 00:14
- Localisation : Antony
-
- Utilisateur éprouvé
- Messages : 856
- Inscription : jeudi 21 septembre 2006, 00:14
- Localisation : Antony
C'est génial ce truc. Merci beaucoup. On obtient une bonne base de code pstricks. Après, on retouche un peu, mais globalement ça va beaucoup plus vite. Vraiment bravo. Tu dois t'y connaître pas mal en info.
Sinon, si quelqu'un a reussi à créer une macro LaTeX (avec pstricks) qui fait ce que je demandais au debut du post, je suis très intéressé.
Merci beaucoup Triphon.
Sinon, si quelqu'un a reussi à créer une macro LaTeX (avec pstricks) qui fait ce que je demandais au debut du post, je suis très intéressé.
Merci beaucoup Triphon.
-
- Modérateur honoraire
- Messages : 1839
- Inscription : mercredi 01 juin 2005, 18:39
- Localisation : Un peu plus à l'Ouest
Je suis intéressé par un retour sur les défauts du codefrancois a écrit :C'est génial ce truc. Merci beaucoup. On obtient une bonne base de code pstricks. Après, on retouche un peu, mais globalement ça va beaucoup plus vite.
Pas plus que ça, c'est vraiment trois lignes de code par ci par là. Le boss là-dedans, c'est Markus Hohenwarter, qui a fait Geogebra.Vraiment bravo. Tu dois t'y connaître pas mal en info.
Vraiment pas de quoi !Sinon, si quelqu'un a reussi à créer une macro LaTeX (avec pstricks) qui fait ce que je demandais au debut du post, je suis très intéressé.
Merci beaucoup Triphon.
Pas de questions en MP
La calculatrice, c'est comme Linux, c'est de la merde !
La calculatrice, c'est comme Linux, c'est de la merde !
Tracer une courbe en précisant les points et les tangentes.
Bonjour,
voici un code réalisé il y a quelques temps permettant de le faire en pstricks: le code est certainement très maladroit et sûrement largement perfectible mais ça marche.
voici le code:
La macro \verb+\HermiteDDL*+ trace la courbe sans les tangentes.
Toute remarque constructive est la bienvenue et même souhaitée.
En particulier ce serait bien de pouvoir faire: \HermiteDDl(1,-2,3)(3,5,-0.3) etc. Mais ça sort de mon domaine de compétence.
voici un code réalisé il y a quelques temps permettant de le faire en pstricks: le code est certainement très maladroit et sûrement largement perfectible mais ça marche.
voici le code:
Code : Tout sélectionner
\usepackage{pstricks-add}
\usepackage{coollist}
% ne sert que pour déterminer la longueur de la %liste
% pourrait-être facilement remplacé par une macro utilisant \@for
\usepackage{fp}
\usepackage{calc}
\newcounter{ExtraireHermite}
\makeatletter
\newcommand{\ExtraireEltH}[3]{%
\setcounter{ExtraireHermite}{1}
\@for\@termeE :=#3\do{%
\ifthenelse{\theExtraireHermite=#2}{%
\FPround{#1}{\@termeE{}}{1}\stepcounter{ExtraireHermite}}{\stepcounter
{ExtraireHermite}}}}
\makeatother
%%
%#1 x1
%#2 y1
%#3 y'1
%#4 x2
%#5 y2
%#6 y'2
\newcommand{\Interpolation}[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%%%
%\FPset{\DemiTangente}
\newcounter{Tempo}
\newcounter{NbreTriplets}
\newcommand{\HermiteDDLA}[2][1]{%
\setcounter{NbreTriplets}{0}%
\listlenstore{NbreTriplets}{#2}% utilisation de coollist
\setcounter{NbreTriplets}{(\theNbreTriplets/3)-1}%
%%% gestion du premier triplet
% extraction du premier triplet
\ExtraireEltH{\Xa}{1}{#2}%
\ExtraireEltH{\Ya}{2}{#2}%
\ExtraireEltH{\Yprimea}{3}{#2}%
% gestion des tangentes%
\FPeval\DemiTangente{#1/((1+(\Yprimea)^2)^(0.5))}
\FPeval\DemiTangenteV{(\Yprimea)*(\DemiTangente)}
\FPsub\TangentXa\Xa\DemiTangente
\FPadd\TangentXb\Xa\DemiTangente
\FPsub\TangentYa\Ya\DemiTangenteV
\FPround\TangentYa\TangentYa{3}
\FPadd\TangentYb\Ya\DemiTangenteV
\FPround\TangentYb\TangentYb{3}
%tracés
\psline{<->}(\TangentXa,\TangentYa)(\TangentXb,\TangentYb)
%%Gestion des triplets suivants
\multido{\n=4+3}{\theNbreTriplets}{%
%extraction du triplet
\setcounter{Tempo}{\n}%
\ExtraireEltH{\Xb}{\theTempo}{#2}%
\stepcounter{Tempo}%
\ExtraireEltH{\Yb}{\theTempo}{#2}%
\stepcounter{Tempo}%
\ExtraireEltH{\Yprimeb}{\theTempo}{#2}%
%gestion de la tangente
\FPeval\DemiTangente{#1/((1+(\Yprimeb)*(\Yprimeb))^(0.5))}
\FPeval\DemiTangenteV{(\Yprimeb)*(\DemiTangente)}
\FPsub\TangentXa\Xb\DemiTangente
\FPadd\TangentXb\Xb\DemiTangente
\FPsub\TangentYa\Yb\DemiTangenteV
\FPround\TangentYa\TangentYa{3}
\FPadd\TangentYb\Yb\DemiTangenteV
\FPround\TangentYb\TangentYb{3}
%tracés
\Interpolation{\Xa}{\Ya}{\Yprimea}{\Xb}{\Yb}{\Yprimeb}%
\psline{<->}(\TangentXa,\TangentYa)(\TangentXb,\TangentYb)
%fin tracés
\FPset\Xa\Xb%
\FPset\Ya\Yb%
\FPset\Yprimea\Yprimeb%
}}
%%%%%%%%% version sans tangentes%%%%%%%%%%%%%%%
\newcommand{\HermiteDDLB}[2][1]{%
\setcounter{NbreTriplets}{0}%
\listlenstore{NbreTriplets}{#2}}% utilisation de coollist
\setcounter{NbreTriplets}{(\theNbreTriplets/3)-1}%
\ExtraireEltH{\Xa}{1}{#2}%
\ExtraireEltH{\Ya}{2}{#2}%
\ExtraireEltH{\Yprimea}{3}{#2}%
\multido{\n=4+3}{\theNbreTriplets}{%
\setcounter{Tempo}{\n}%
\ExtraireEltH{\Xb}{\theTempo}{#2}%
\stepcounter{Tempo}%
\ExtraireEltH{\Yb}{\theTempo}{#2}%
\stepcounter{Tempo}%
\ExtraireEltH{\Yprimeb}{\theTempo}{#2}%
\Interpolation{\Xa}{\Ya}{\Yprimea}{\Xb}{\Yb}{\Yprimeb}%
\FPset\Xa\Xb%
\FPset\Ya\Yb%
\FPset\Yprimea\Yprimeb%
}}
%%%%% definition version étoilée ou non%%%%%%
\makeatletter
\def\HermiteDDL{\@ifstar\HermiteDDLB\HermiteDDLA}
\makeatother
%%%%%%%%%%%%%%% fin macro %%%%%%%%%%%%%%%%%%%%%%
exemples
L'argument optionnel désigne la longueur de la demi-tangente en
unités pstricks (quand le repère est orthonormé)\\
La valeur par défaut est 1.
\psset{unit=0.7cm}
\begin{verbatim}
\begin{pspicture}(-5,-3)(9,5)
\psaxes(0,0)(-5,-3)(9,5)
\HermiteDDL{-5,2,0,-3,2,-2,-1,-2.5,2,0,2,1,4,0,3,6,-2,-
2,8,0,3,9,2,0.5}
\end{pspicture}
\end{verbatim}
donne
\begin{center}
\begin{pspicture}(-5,-3)(9,5)
%\psgrid(0,0)(-5,-3)(9,5)
\psaxes(0,0)(-5,-3)(9,5)
\HermiteDDL{-5,2,0,-3,2,-2,-1,-2.5,2,0,2,1,4,0,3,6,-2,-
2,8,0,3,9,2,0.5}
\end{pspicture}
\end{center}
\vspace{2cm}
\begin{verbatim}
\begin{pspicture}(-5,-3)(9,5)
\psaxes(0,0)(-5,-3)(9,5)
\HermiteDDL[2]{-5,2,0,-3,-1,0.5,-1,-2.5,1,0,2,0,4,0,3,6,-
2,0,8,0,3,9,2,0.5}
\end{pspicture}
\end{verbatim}
donne
\begin{center}
\begin{pspicture}(-5,-3)(9,5)
\psaxes(0,0)(-5,-3)(9,5)
\HermiteDDL[2]{-5,2,0,-3,-1,0.5,-1,-2.5,1,0,2,0,4,0,3,6,-
2,0,8,0,3,9,2,0.5}
\end{pspicture}
\end{center}
Toute remarque constructive est la bienvenue et même souhaitée.
En particulier ce serait bien de pouvoir faire: \HermiteDDl(1,-2,3)(3,5,-0.3) etc. Mais ça sort de mon domaine de compétence.
Re: Courbe passant par des points suivant des tangentes
Et non, ce n'est plus lourd.francois a écrit :Je sais qu'avec la commande \psbezier on peut faire quelque chose dans ce genre. Mais il faut bricoler et c'est assez lourd.
J'ai écrit un convertisseur de fichiers DXF qui génère du code pour PSTricks.
Il suffit donc de dessiner la courbe voulue avec des BSplines (avec QCad, TurboCad, Blender, Solidworks par exemple). Un coup de convertisseur sur le fichier DXF et on a le code PSTricks...
Pour créer des tangentes propres, on peut par exemple dessiner le polygone de contrôle sur un calque, et les BSplines sur un autre.
Un fois les BSplines tracées en s'accrochant aux extrémités des segments du polygone, on rend le calque qui contient le polygone invisible et on obtient ainsi un tracé de splines impeccable.
Bon pour l'instant mon convertisseur n'est pas fini, mais il marche pour les splines, polylines, les arcs, les ellipses, le texte, la couleur et le type de ligne. Je travaille à le rendre mon code C++ portable pour Linux...
-
- Utilisateur éprouvé
- Messages : 856
- Inscription : jeudi 21 septembre 2006, 00:14
- Localisation : Antony
-
- Utilisateur éprouvé
- Messages : 213
- Inscription : jeudi 28 février 2008, 16:20
- Localisation : Vendée
Re:
Salut tout le monde, je déterre cette discussion car j'ai trouvé plein de fichiers hermite sur geogebra mais aucun avec une macro comme semble proposer ce fichier de Tryphon. En effet, je cherche à faire un fichier geogebra avec 2 courbes passant par des points avec des tangentes données sur geogebra (ce n'est pas pour un export vers LaTeX cette fois ci (j'ai une macro pstricks pour ça).Tryphon a écrit : ↑mercredi 24 janvier 2007, 13:22 Tiens ! Tu cliques sur l'icone en forme de courbe plus moche que les autres (c'est moi qui l'ai dessiné ) et tu rentres les points par paires : un point par lequel passe ta courbe, un point dirigeant la tangente, etc. Quand t'as fini, tu recliques sur le dernier point (celui dirigeant la tangente au dernier point de la courbe).
Après t'es mûr pour exporter en Pstricks (Fichier/Exporter la figure, choisis Pstricks dans la liste).
Le code est pas forcément super propre, désolé, je vais arranger ça petit à petit. Pour information, la partie "Export" est en grande partie dûe à Loic Lecoq et est disponible dans la version officielle de développement de Geogebra. Les trucs qui font que son code déconne parfois ont été rajoutés par moi
Est-ce que quelqu'un a sous la main le fichier de Tryphon (le lien est mort) ou un fichier geogebra dans lequel il y a 2 courbes de ce type. Je pourrais ajuster les points dans ce cas.
Merci d'avance !
Thibault
Prof de maths...
Utilisateur de LaTeX sous Linux (kubuntu 23.10)
Distrib TeXlive
Éditeur GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.17.8) + auctex + yasnippets
Prof de maths...
Utilisateur de LaTeX sous Linux (kubuntu 23.10)
Distrib TeXlive
Éditeur GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.17.8) + auctex + yasnippets
-
- Administrateur
- Messages : 8078
- Inscription : samedi 28 mai 2005, 14:23
- Statut actuel : Enseignant
Re: Courbe passant par des points suivant des tangentes
Bonsoir,
Les pièces jointes très anciennes ont malheureusement été perdues lors d'une mise à jour, il ne sera donc pas facile de retrouver le fichier en question.
Les pièces jointes très anciennes ont malheureusement été perdues lors d'une mise à jour, il ne sera donc pas facile de retrouver le fichier en question.
-
- Utilisateur éprouvé
- Messages : 213
- Inscription : jeudi 28 février 2008, 16:20
- Localisation : Vendée
Re: Courbe passant par des points suivant des tangentes
Oui, avec un peu de chance, quelqu'un a gardé le fichier ;-)
Je croise les doigts !
Merci
Je croise les doigts !
Merci
Thibault
Prof de maths...
Utilisateur de LaTeX sous Linux (kubuntu 23.10)
Distrib TeXlive
Éditeur GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.17.8) + auctex + yasnippets
Prof de maths...
Utilisateur de LaTeX sous Linux (kubuntu 23.10)
Distrib TeXlive
Éditeur GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.17.8) + auctex + yasnippets