Extension pst-eucl Géométrie euclidienne avec PSTricks

Version 0.β.5

Dominique Rodriguez

2 mai 2002

Résumé

L’extension pst-eucl permet de dessiner des figures géométriques en spécifiant des contraintes mathématiques. Il est ainsi possible de définir des points au moyen de transformations ou d’intersection. L’emploi des coordonnées est donc limité aux points de départ qui paramètrent en quelque sorte le dessin.

Remerciements

Je tiens à remercier tout particulièrement les personnes suivantes pour leur aide dans l’élaboration de ce paquetage :

– Denis girou pour ses critiques pertinentes et ses encouragement lors de la découverte de l’embryon initial et pour sa relecture du présent manuel ;

– Manuel Luque et Olivier Reboux pour leurs remarques et leurs exemples.

Avertissement

Ceci est une version β, elle est encore en cours de développement, le nom des fonctions peut et va changer sans maintient de la compatibilité ascendante.

Table des matières

1 Manuel de l’utilisateur 2

1.1 Spécifications particulières . . . . . . 2 1.1.1 Options de PSTricks . . . . . 2 1.1.2 Conventions . . . . . . . . . . 2

1.2 Objets de base . . . . . . . . . . . . 2 1.2.1 Les points . . . . . . . . . . . 2 1.2.2 Marquage des segments …. 4 1.2.3 Triangles . . . . . . . . . . . . 4 1.2.4 Angles . . . . . . . . . . . . . 5 1.2.5 Droites, demi-droites et seg-

ments . . . . . . . . . . . . . 5 1.2.6 Cercles . . . . . . . . . . . . . 6 1.2.7 Arcs de cercles . . . . . . . . 6 1.2.8 Abscisse curviligne . . . . . . 7 1.2.9 Courbe générique . . . . . . . 7

1.3 Transformations . . . . . . . . . . . . 8 1.3.1 Symétrie centrale . . . . . . . 8 1.3.2 Symétrie orthogonale . . . . . 8 1.3.3 Rotation . . . . . . . . . . . . 9 1.3.4 Translation . . . . . . . . . . 9 1.3.5 Homothétie . . . . . . . . . . 9 1.3.6 Projection orthogonale …. 10

1.4 Objets particuliers . . . . . . . . . . 10 1.4.1 Milieu . . . . . . . . . . . . . 10 1.4.2 Centre de gravité d’un triangle 10 1.4.3 Cercle circonscrit d’un tri-

angle et son centre . . . . . . 11 1.4.4 Médiatrice d’un segment … 11 1.4.5 Bissectrices d’un angle …. 12 1.5 Intersections . . . . . . . . . . . . . . 12 1.5.1 Droite-droite . . . . . . . . . 13 1.5.2 Cercle–droite . . . . . . . . . 13 1.5.3 Cercle–cercle . . . . . . . . . 14

2 Galerie d’exemples 17 2.1 Géométrie élémentaire . . . . . . . . 17 2.1.1 Tracé de la bissectrice …. 17 2.1.2 Angle droit allemand . . . . . 17 2.1.3 Droites remarquables du tri-

angle . . . . . . . . . . . . . . 18 2.1.4 Cercle d’Euler . . . . . . . . 19 2.1.5 Orthocentre et hyperbole … 20 2.1.6 Polygone régulier à 17 côtés . 21 2.1.7 Tangentes de cercles . . . . . 21 2.1.8 Point de Fermat d’un triangle 23 2.1.9 Cercles ex-insrits et inscrit

d’un triangle . . . . . . . . . . 23

2.2 Quelques lieux de points . . . . . . . 25 2.2.1 Parabole . . . . . . . . . . . . 25 2.2.2 Hyperbole . . . . . . . . . . . 26 2.2.3 Cycloïde . . . . . . . . . . . . 27 2.2.4 Hypocycloïdes (astroïde et

deltoïde) . . . . . . . . . . . . 27

2.3 Enveloppes de droites et de cercles . 29 2.3.1 Coniques . . . . . . . . . . . . 29 2.3.2 Cardioïde . . . . . . . . . . . 29 2.4 Homothéties et fractales . . . . . . . 30 2.5 Géométrie hyperbolique : triangle et

ses hauteurs . . . . . . . . . . . . . . 31

Chapitre 1

Manuel de l’utilisateur

1.1 Spécifications particulières

1.1.1 Options de PSTricks

L’extension active le mode \SpecialCoor. Ce mode permet d’étendre la manière dont les coordonnées sont spécifiées en plus des classiques coordonnées cartésiennes. D’autre part le mode de tracé est mis à dimen=middle, c’est-à-dire que le positionnement des tracés est fait par rapport à leur milieu. Pour ces deux modes, je vous renvoie au manuel de l’utilisateur.

Enfin, il est supposé que le repère de travail est (ortho)normé.

1.1.2 Conventions

Pour la rédaction de ce manuel, j’ai utilisé les conventions géométriques de nommage des points classiques en France :

– O est un centre (cercle, repère, symétrie, homotéthie, rotation) ;

– I est l’unité de l’axe des abscisses, ou un milieu ;

– J est l’unité de l’axe des ordonnées ;

– A, B, C, D sont des points ;

– M est un point paramètre ;

– M′ l’image de M par une transformation ; Enfin, bien que s’agissant de nœuds au sens de PSTricks, je les ai résolument confondus avec des points

dans le texte.

1.2 Objets de base

1.2.1 Les points

Repère par défaut

\pstGeonode[⟨par⟩](x, y){⟨A⟩}

1.2. OBJETS DE BASE  CHAPITRE 1. MANUEL DE L’UTILISATEUR

Cette commande définit un point géométrique associé avec un nœud. Le point possède un nom de nœud ⟨A⟩, qui définit par défaut l’étiquette placée sur le dessin. D’autre part, celle-ci est par défaut traitée en mode mathématique, le paramètre booléen PtNameMath permet de modifier ce traitement et de traiter l’étiquette en mode normal. Elle est positionnée à une distance de 1em du nœud, avec un angle de PosAngle(0 par défaut). Il est également possible de proposer une étiquette différente du nom de nœud avec le paramètre PointName, et une étiquette vide se spécifie en positionnant ce paramètre à none ; dans ce cas le point n’aura pas de nom sur le dessin.

Le symbole du point est donné par le paramètre PointSymbol (* par défaut). Le symbole est celui utilisé pour la commande \psdot. Il peut être également positionné à none, auquel cas le point n’est pas affiché sur la figure y compris son étiquette.

Voici en rappel les valeurs possibles du symbole :

– * :

– o :

– + :

– x :

– asterisk :
– oplus :

                             – otimes :
                             – triangle :
                             – triangle* :
                             – square :
                             – square* :
                             – diamond :

                                                          – diamond* :
                                                          – pentagon :
                                                          – pentagon* :

– | :

A B_{1} B_{2}

                           \pstGeonode{A}
                           \pstGeonode[PosAngle=-90](1,2){B_1}
                           \pstGeonode[PointSymbol=o, PtNameMath=false,
                                       PointName=$B_2$, linecolor=red](-2,1){B2}

Il est évident que les nœuds ainsi définis sont utilisables par toutes les commandes utilisant les nœuds de PSTricks. Ainsi, il est possible de les réferencer d’ici.

Repère personnalisé

\pstOIJGeonode[⟨par⟩](x, y){⟨A⟩}{⟨O⟩}{⟨I⟩}{⟨J⟩}

Cette commande permet de placer des points dans un repère quelconque non forcément normé ni orthogonal, défini par le triplet (O; I; J).

\begin{matrix}O \\ I \\ J \\ A \\ B \\ C \\ D \end{matrix}

                           \pstGeonode[PosAngle=-135]{O}
                           \pstGeonode[PosAngle=-90](1,0.5){I}
                           \pstGeonode[PosAngle=-180](0.5,2){J}
                           \pstLineAB[nodesep=100]{O}{I}
                           \pstLineAB[nodesep=100]{O}{J}
                           \multips(-5,-2.5)(1,0.5){11}{\psline(0,-.15)(0,.15)}
                           \multips(-5,-2.5)(1,0.5){11}
                             {\psline[linestyle=dotted](-10,-40)(10,40)}
                           \multips(-2,-8)(0.5,2){9}{\psline(-.15,0)(.15,0)}
                           \multips(-2,-8)(0.5,2){9}
                             {\psline[linestyle=dotted](-10,-5)(10,5)}
                           \psset{PointSymbol=x}
                           \pstOIJGeonode[PosAngle=-90](3,1){A}{O}{I}{J}
                           \pstOIJGeonode(-2,1){B}{O}{I}{J}
                           \pstOIJGeonode(-1,-1.5){C}{O}{I}{J}
                           \pstOIJGeonode(2,-1){D}{O}{I}{J}

1.2.2 Marquage des segments

Il est possible de tracer des segments en utilisant la commande \ncline. Pour en plus marquer les segments afin d’associer ceux ayant la même longueur, il existe la commande :

\pstSegmentMark[⟨par⟩]{⟨A⟩}{⟨B⟩}

Le symbole placé sur le segment est donné par le paramètre SegmentSymbol. Il prend comme valeur une commande utilisable en mode mathématique. Par défaut, sa valeur est pstslashslash, et produit deux barres sur le segment. Le segment est également tracé.

\begin{matrix}A \\ B \\ C \\ D \\ E \end{matrix} // // // // //

                              \rput{18}{%
                                \pstGeonode(2,0){A}
                                \pstGeonode[PosAngle=90, PointSymbol=x](2;72){B}
                                \pstGeonode[PosAngle=180](2;144){C}
                                \pstGeonode[PosAngle=-90](2;216){D}
                                \pstGeonode[PosAngle=-90](2;288){E}}
                              \pstSegmentMark{A}{B}
                              \pstSegmentMark[linecolor=green]{B}{C}
                              \pstSegmentMark[linewidth=2pt]{C}{D}
                              \pstSegmentMark{D}{E}
                              \pstSegmentMark{E}{A}

1.2.3 Triangles

Figures étudiées par excellence, elles possèdent leur macro pour les tracer rapidement :

\pstTriangle[⟨par⟩] (x_{A}; y_{A}){⟨A⟩}(x_{B}; y_{B}){⟨B⟩}(x_{C}; y_{C}){⟨C⟩}

Afin de pouvoir placer avec précision les noms des points, il existe trois paramètres PosAngleA, PosAngleB et PosAngleC, qui s’associent respectivement aux nœuds ⟨A⟩, ⟨B⟩ et ⟨C⟩. Ils ont le même rôle que le paramètre PosAngle vu précédemment. Si un ou plusieurs de ces paramètres ne sont pas spécifiés la valeur de PosAngle est prise.

Il existe également des paramètres pour contrôler le symbole utilisé pour représenter les points : PointSymbolA, PointSymbolB et PointSymbolC, et des paramètres pour le nom de chacun des points : PointNameA, PointNameB et PointNameC. Ces deux ensembles de paramètres sont liés à PointSymbol et PointName. La gestion de la valeur par défaut suit les mêmes règles que celles vues précédemment.

\begin{matrix}A \\ B \\ C \end{matrix}

                              \pstTriangle[PosAngleA=-90, PosAngleB=90, PosAngleC=180,
                                PointSymbol=square, PointSymbolC=o,
                                linecolor=blue, linewidth=1.5pt]
                                (1.5,-1){A}(0,1){B}(-1,-.5){C}

1.2.4 Angles

Chaque angle est déterminé par trois points. Le sommet de l’angle est le second. L’ordre a de l’importance en sachant que le sens direct ou trigonométrique est le sens inverse des aiguilles d’une montre. Tout d’abord, il est possible de marquer un angle droit avec le symbole standard :

\pstRightAngle[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨C⟩}

L’unique paramètre auquel est sensible cette commande, hormis bien entendu ceux de contrôle du trait, est RightAngleSize qui permet de contrôler la longueur du carré utilisé (0.28 unit par défaut). Le symbole est placé sur l’angle de sommet ⟨B⟩.

Pour les autres angles, il y a la commande :

\pstMarkAngle[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨C⟩}{⟨label⟩}

L’étiquette définie par le paramètre label peut être tout texte TEX. Elle est placée à LabelSep (1 unit par défaut) du point dans la direction angulaire de la bissectrice intérieure modifié par LabelAngleOffset (0 par défaut) et positionnée par rapport à LabelRefPt (c par défaut). D’autre part l’arc de cercle utilisé pour le marquage a pour rayon MarkAngleRadius (.4 unit par défaut). Enfin, il est posible de placer une flèche en début ou fin d’arc en utilisant le paramètre arrows.

θ γ

                              \pstTriangle[PointSymbol=none](2;15){A}(2;85){B}(2;195){C}
                              \pstRightAngle[RightAngleSize=.3, linecolor=red,
                                linewidth=.5pt]{C}{B}{A}
                              \pstMarkAngle[linecolor=cyan,
                                linewidth=1.5pt]{A}{C}{B}{$\theta$}
                              \pstMarkAngle[linecolor=red, linewidth=1.5pt,
                                arrows=->]{B}{A}{C}{$\gamma$}

1.2.5 Droites, demi-droites et segments

Rien de plus utile qu’une droite ! \pstLineAB[⟨par⟩]{⟨A⟩}{⟨B⟩}

Afin de contrôler sa longueur^{1}, les deux paramètres nodesepA et nodesepB indiquent l’abscisse des extrémités de la droite. Une abscisse négative spécifie un dépassement au-delà des points, tandis qu’une abscisse positive indique le contraire. Si les deux valeurs sont identiques, on peut utiliser alors le paramètre nodesep. La valeur par défaut de ces paramètres est nulle.

\begin{matrix}A \\ B \end{matrix}

                              \pstGeonode(1,1){A}\pstGeonode(-1,-1){B}
                              \pstLineAB[nodesepA=-.4, nodesepB=-1, linecolor=green]{A}{B}
                              \pstLineAB[nodesep=.4, linecolor=red]{A}{B}

1Ce qui est le comble pour une droite !

1.2.6 Cercles

Un cercle peut être défini soit par son centre et un point de sa circonférence, soit par deux points diamètralement opposés. Il existe donc deux fonctions :

\pstCircleOA[⟨par⟩]{⟨O⟩}{⟨A⟩} \pstCircleAB[⟨par⟩]{⟨A⟩}{⟨B⟩}

Pour la première fonction, il est également possible d’omettre le second point, et de spécifier un rayon ou un diamètre avec les paramètres Radius et Diameter au moyen des deux fonctions suivantes :

\pstDistAB[⟨par⟩]{⟨A⟩}{⟨B⟩} \pstDistVal[⟨par⟩]{⟨x⟩}

La première permet de spécifier une distance entre deux points. Le paramètre DistCoef permet de donner un coefficient multiplicatif à appliquer sur cette distance. Afin d’être pris en considération, ce paramètre doit être spécifié avant la distance. La seconde fonction permet de spécifier directement une valeur numérique qui peut être un calcul en code PostScript.

Nous verrons plus loin comment tracer le cercle passant par trois points.

Avec cette extension, il devient possible de

tracer :

– le cercle de centre A passant par B;

– le cercle de centre A de rayon les deux tiers de AC;

– le cercle de centre A de rayon BC;

– le cercle de centre B de rayon AC;

– le cercle de centre B de diamètre AC;

– le cercle de diamètre BC;

\begin{matrix}A \\ B \\ C \end{matrix}

\psset{linewidth=2pt}
\pstGeonode(1,0){A}
\pstGeonode[PosAngle=-135](-2,-1){B}
\pstGeonode[PosAngle=90, PointSymbol=square](0,1){C}
\pstCircleOA[linecolor=red]{A}{B}
\pstCircleOA[linecolor=green, DistCoef=2 3 div, Radius=\pstDistAB{A}{C}]{A}{}
\pstCircleOA[linecolor=blue, Radius=\pstDistAB{B}{C}]{A}{}
\pstCircleOA[linecolor=Sepia, Radius=\pstDistAB{A}{C}]{B}{}
\pstCircleOA[linecolor=Aquamarine, Diameter=\pstDistAB{A}{C}]{B}{}
\pstCircleAB[linecolor=RoyalBlue]{B}{C}

1.2.7 Arcs de cercles

\pstArcOAB[⟨par⟩]{⟨O⟩}{⟨A⟩}{⟨B⟩} \pstArcnOAB[⟨par⟩]{⟨O⟩}{⟨A⟩}{⟨B⟩}

Ces deux fonctions tracent des arcs de cercle, le centre étant donné par O, le rayon par OA, l’angle de départ par A et celui d’arrivée par B. Enfin la première trace l’arc dans le sens direct et la seconde dans le sens indirect. Il n’est pas nécessaire que les deux points soient à égales distances de O.

\begin{matrix}A \\ B \\ O \end{matrix}

                              \pstGeonode[PosAngle=180](1.5;24){A}
                              \pstGeonode(1.8;-31){B}
                              \pstGeonode{O}
                              \psset{arrows=->, arrowscale=2}
                              \pstArcOAB[linecolor=red, linewidth=1.5pt]{O}{A}{B}
                              \pstArcOAB[linecolor=blue, linewidth=1.5pt]{O}{B}{A}
                              \pstArcnOAB[linecolor=green, linewidth=1pt]{O}{A}{B}
                              \pstArcnOAB[linecolor=magenta, linewidth=1.5pt]{O}{B}{A}

1.2.8 Abscisse curviligne

Un point peut être positionné sur un cercle au moyen d’une abscisse curviligne.

\pstCurvAbsNode[⟨par⟩]{⟨O⟩}{⟨A⟩}{⟨B⟩}{⟨Abs⟩}

Le point ⟨B⟩ est placé sur le cercle de centre ⟨O⟩ passant par ⟨A⟩, avec l’abscisse curviligne ⟨Abs⟩. L’origine est en ⟨A⟩, et le sens est par défaut le sens trigonométrique (inverse des aiguilles d’une montre). Le paramètre CurvAbsNeg (false par défaut) permet de modifier le sens de parcours du cercle.

O A M_{1} M_{2}

                              \pstGeonode{O}\pstGeonode(2,0){A}
                              \pstCircleOA{O}{A}
                              \pstCurvAbsNode{O}{A}{M_1}{\pstDistVal{5}}
                              \pstCurvAbsNode[CurvAbsNeg=true]{O}{A}{M_2}{\pstDistAB{A}{M_1}}

1.2.9 Courbe générique

Il est tout à fait possible de générer des points au moyen d’une boucle et de leur donner à chacun un nom générique composé d’un radical et d’un nombre. La commande suivante permet de relier ces points au moyen d’une courbe interpolée.

\pstGenericCurve[⟨par⟩]{⟨Radical⟩}{⟨n_{1}⟩}{⟨n_{2}⟩}

La courbe est tracée sur les points dont le nom comporte le radical ⟨Radical⟩, et comme suffixe un nombre allant de ⟨n_{1}⟩ à ⟨n_{2}⟩. Pour gérer les effets de bords, les paramètres GenCurvFirst et GenCurvLast permettent de désigner explicitement le premier et le dernier point. Le paramètre GenCurvInc permet de spécifier l’incrément de boucle pour passer d’un point à un autre (1 par défaut).

A M_{20} M_{40} M_{60} M_{80} M_{100} M_{120} M_{140} M_{160} M_{180} M_{200} M_{220} M_{240} M_{260} M_{280} M_{300} M_{320} M_{340} M_{360} \psset{unit=.00625}

                              \pstGeonode{A}
                              \multido{\n=20+20}{18}{\pstGeonode[PointName=M_{\n}](\n;\n){M_\n}}
                              \pstGenericCurve[GenCurvFirst=A, GenCurvInc=20,
                                linecolor=blue, linewidth=.5pt]{M_}{20}{360}

1.3. TRANSFORMATIONS  CHAPITRE 1. MANUEL DE L’UTILISATEUR

1.3 Transformations

Les transformations du plan permettent de coder facilement des propriétés géométriques. Il est donc possible de construire les images de points par toutes les transformations classiques du plan.

Toutes ces commandes partagent le paramètre CodeFig qui permet de faire apparaître les propriétés caractéristiques liées à la tranformation et à la construction de l’image. Par défaut, ce paramètre a pour valeur false, il doit être mis à true pour activer ce tracé optionnel.

Ce tracé se fait en utilisant le style CodeFigStyle (dashed par défaut) et suivant la couleur CodeFigColor (cyan par défaut).

1.3.1 Symétrie centrale

\pstSymO[⟨par⟩]{⟨O⟩}{⟨M⟩}{⟨M′⟩}

Construit le point symétrique par rapport au point⟨O⟩. Les paramètres classiques de la création de point sont utilisables comme dans toutes les fonctions suivantes.

Elle peut servir à la construction d’un parallélogramme de centre connu.

O A B C // // D / /

                              \psset{CodeFig=true}
                              \pstGeonode[PosAngle=20]{O}
                              \pstGeonode[PosAngle=90](-.6,1.5){A}
                              \pstGeonode(1.6,-.5){B}
                              \pstSymO[CodeFigColor=blue, PosAngle=-90]{O}{A}{C}
                              \pstSymO[SegmentSymbol=pstslash, PosAngle=180]
                                {O}{B}{D}
                              \pstLineAB{A}{B}\pstLineAB{C}{D}
                              \pstLineAB{A}{D}\pstLineAB{C}{B}

1.3.2 Symétrie orthogonale

\pstOrtSym[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨M⟩}{⟨M′⟩}

Construit le point symétrique de M par rapport à la droite (AB).

A B C D A_{′} // // B_{′} / /

                              \pstTriangle[PosAngleB=180]
                                (4,1){A}(1,3){B}(5,5){C}
                              \pstOrtSym{A}{B}{C}{D}
                              \psset{CodeFig=true}
                              \pstOrtSym[dash=2mm 2mm, CodeFigColor=red]
                                {C}{B}{A}{A'}
                              \pstOrtSym[SegmentSymbol=pstslash, linestyle=dotted,
                                dotsep=3mm, CodeFigColor=blue]
                                {C}{A}{B}{B'}

1.3.3 Rotation

\pstRotation[⟨par⟩]{⟨centre⟩}{⟨M⟩}{⟨M’⟩}

Construit l’image d’un point par rotation. L’angle de rotation est donné par le paramètre RotAngle (60 par défaut). Celui-ci peut-être un angle orienté défini par trois points. Il faut alors utiliser la fonction :

\pstAngleABC{⟨A⟩}{⟨B⟩}{⟨C⟩}

Pensez à l’utiliser pour construire un carré ou un triangle équilatéral.

A B C 60^{∘} D_{\frac{1}{2}} B̂AC

                              \pstGeonode[PosAngle=-135](-1.5,-1.2){A}
                              \pstGeonode(.5,-.8){B}
                              \pstRotation[PosAngle=90, RotAngle=60]{A}{B}{C}
                              \psline(C)(A)(B)
                              \pstMarkAngle{B}{A}{C}{60^{∘}}
                              \pstRotation[AngleCoef=.5, RotAngle=\pstAngleAOB{A}{B}{C}]
                                {A}{B}{D}
                              \psline(A)(D)
                              \pstMarkAngle[MarkAngleRadius=.5, LabelRefPt=l]
                                {D}{A}{B}{$\frac{1}{2}\widehat{BAC}$}

1.3.4 Translation

\pstTranslation[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨M⟩}{⟨M′⟩}

Construit le translaté de vecteur \overrightarrow{AB} du point ⟨M⟩. À utiliser pour construire la parallèle passant par un point.

A B C C_{′}

                              \psset{linecolor=green, nodesep=-1, PosAngle=90}
                              \pstGeonode(-1.5,-1.2){A}
                              \pstGeonode(.5,-.8){B}
                              \pstGeonode(.5,1){C}
                              \pstTranslation{B}{A}{C}{C'}
                              \pstLineAB{A}{B}\pstLineAB{C}{C'}

Il est également possible d’utiliser le paramètre DistCoef pour modifier le vecteur de translation avec un coefficient multiplicatif.

1.3.5 Homothétie

\pstHomO[⟨par⟩]{⟨O⟩}{⟨M⟩}{⟨M′⟩}

Construit l’image d’un point par homothétie. Le coefficient se spécifie avec le paramètre HomCoef. Incontournable pour les situations de Thalès.

1.4. OBJETS PARTICULIERS  CHAPITRE 1. MANUEL DE L’UTILISATEUR

\begin{matrix}O \\ A \\ B \\ C \\ D \end{matrix}

\pstGeonode(.5,1){O}
\psset{PosAngle=-45}
\pstGeonode(-1.5,-1.2){A}
\pstGeonode(.5,-.8){B}
\psset{linecolor=green, nodesep=-1, HomCoef=.62}
\pstHomO{O}{A}{C}
\pstHomO{O}{B}{D}
\pstLineAB{A}{O}\pstLineAB{B}{O}
\psset{linecolor=red, nodesep=-.5}
\pstLineAB{A}{B}\pstLineAB{C}{D}

1.3.6 Projection orthogonale

\pstProjection[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨M⟩}{⟨M′⟩}

Projette orthogonalement le point M sur la droite (AB). Très important pour tracer les hauteurs d’un triangle.

\begin{matrix}A \\ B \\ C \\ I \\ J \\ K \end{matrix}

\pstTriangle[PosAngleB=-90, PosAngleC=180,
  PointSymbolC=square]
  (1,1){A}(-1,-1){B}(-2,1){C}
\psset{CodeFig=true, CodeFigColor=red}
\pstProjection[PosAngle=-45]{A}{B}{C}{I}
\pstProjection[PosAngle=90]{A}{C}{B}{J}
\pstProjection[PosAngle=-135]{C}{B}{A}{K}

1.4 Objets particuliers

1.4.1 Milieu

\pstMiddleAB[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨I⟩}

Construit le milieu d’un segment.

A B C C_{′} B_{′} A_{′}

\pstTriangle[PosAngleB=-90, PosAngleC=90]%
  (1,1){A}(-1,-1){B}(-2,1){C}
\pstMiddleAB{A}{B}{C'}
\pstMiddleAB[PosAngle=90]{A}{C}{B'}
\pstMiddleAB[PosAngle=180]{C}{B}{A'}

1.4.2 Centre de gravité d’un triangle

1.4. OBJETS PARTICULIERS  CHAPITRE 1. MANUEL DE L’UTILISATEUR

\pstCGravABC[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨C⟩}{⟨G⟩} Construit le centre de gravité d’un triangle.

\begin{matrix}A \\ B \\ C \\ G \end{matrix}

                              \pstTriangle[PosAngleB=-90, PosAngleC=90]
                                (1,1){A}(-1,-1){B}(-2,1){C}
                              \pstCGravABC{A}{B}{C}{G}

1.4.3 Cercle circonscrit d’un triangle et son centre

\pstCircleABC[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨C⟩}{⟨O⟩}

Cette commande permet de tracer le cercle passant par trois points et de positionner le centre. Le tracé du cercle est contrôlé par le paramètre booléen DrawCirABC (true par défaut). La création du point est sensible à tous les paramètres classiques déjà vus.

\begin{matrix}A \\ B \\ C \\ O \end{matrix}

                                   \pstTriangle[PosAngleA=-90, PosAngleB=180, PosAngleC=0]
                                     (4,1){A}(1,3){B}(5,5){C}
                                   \pstCircleABC[CodeFig=true, CodeFigColor=blue,
                                                linecolor=red]{A}{B}{C}{O}

1.4.4 Médiatrice d’un segment

\pstMediatorAB[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨I⟩}{⟨M⟩}

La médiatrice d’un segment est la droite perpendiculaire au milieu de ce segement. Le segment est [AB], le milieu est I, et M est un point de la médiatrice, construit par une rotation de 90˚ du point point B par rapport à I. L’ordre des deux points est important, il permet de contrôler la position de la médiatrice. La commande crée les points M et I. La construction est sensible aux paramètres suivant :

– CodeFig, CodeFigColor et SegmentSymbol pour marquer l’angle droit et le milieu ;

– PointSymbol et PointName pour contrôler l’apparence des deux nouveaux points, chacun pouvant être spécifiés séparément au moyen des paramètres ...A et ...B ;

– les paramètres de tracés des droites.

1.5. INTERSECTIONS  CHAPITRE 1. MANUEL DE L’UTILISATEUR

A B C I M_{I} J // // K

                                   \pstTriangle[PosAngleA=-75, PosAngleB=180, PosAngleC=45]
                                          (3.5,1){A}(1,4){B}(5,4.2){C}
                                   \psset{linecolor=red, CodeFigColor=red, nodesep=-1}
                                   \pstMediatorAB{A}{B}{I}{M_I}
                                   \psset{PointSymbolB=none}
                                   \pstMediatorAB[CodeFig=true, PointSymbolB=none]
                                          {A}{C}{J}{M_J}
                                   \pstMediatorAB[PosAngleA=45, linecolor=blue]
                                          {C}{B}{K}{M_K}

1.4.5 Bissectrices d’un angle

\pstBissectBAC[⟨par⟩]{⟨B⟩}{⟨A⟩}{⟨C⟩}{⟨M⟩}

\pstOutBissectBAC[⟨par⟩]{⟨B⟩}{⟨A⟩}{⟨C⟩}{⟨M⟩}

Il existe deux bissectrices pour un angle géométrique donné : l’intérieure et l’extérieure ; donc il y a deux commandes. L’angle est spécifié dans le sens trigonométrique. Les résultats de ces deux commandes sont la bissectrice et un point de celle-ci qui est positionné par une rotation du point B.

A B C A_{′} A_{′′}

                                   \pstGeonode[PosAngle=-75](4,1){A}
                                   \pstGeonode[PosAngle=180](1,4){B}
                                   \pstGeonode[PosAngle=45](5,4){C}
                                   \psset{linecolor=red}
                                   \ncline{A}{B}\ncline{A}{C}
                                   \pstBissectBAC[linecolor=blue]{C}{A}{B}{A'}
                                   \pstOutBissectBAC[linecolor=green, PosAngle=180]
                                     {C}{A}{B}{A''}

1.5 Intersections

Un autre moyen de définir un point est de spécifier une intersection. Trois types d’intersections sont gérées :

– l’intersection droite-droite ;

– l’intersection droite-cercle ;

– l’intersection cercle-cercle.

Une intersection peut ne pas exister : cas des droites parallèles par exemple. Dans ce cas, le ou les points concernés se retrouvent placés à l’origine. En fait, il est supposé que l’utilisation de ces commandes implique l’existence de l’intersection.

1.5.1 Droite-droite

\pstInterLL[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨C⟩}{⟨D⟩}{⟨M⟩}

Construit le point d’intersection de la droite (AB) avec la droite (CD). Option essentielle de la construction de figures du triangle, elle permet de positionner les points remarquables. Les paragraphes suivants proposent différents exemples :

basique

\begin{matrix}A \\ B \\ C \\ D \\ E \end{matrix}

                                 \pstGeonode(0,-1){A}\pstGeonode(3,2){B}
                                 \pstGeonode(3,0){C}\pstGeonode(1,2){D}
                                 \pstInterLL[PointSymbol=square]{A}{B}{C}{D}{E}
                                 \psset{linecolor=blue, nodesep=-1}
                                 \pstLineAB{A}{B}\pstLineAB{C}{D}

orthocentre

A B C C_{′} A_{′} B_{′} H

                                      \psset{CodeFig=true}
                                      \pstTriangle[PosAngleA=180](-1,0){A}(3,-1){B}(3,2){C}
                                      \pstProjection[PosAngle=-90]{B}{A}{C}{C'}
                                      \pstProjection{B}{C}{A}{A'}
                                      \pstProjection[PosAngle=90]{A}{C}{B}{B'}
                                      \pstInterLL[PosAngle=135, PointSymbol=square]
                                        {A}{A'}{B}{B'}{H}

1.5.2 Cercle–droite

\pstInterLC[⟨par⟩]{⟨A⟩}{⟨B⟩}{⟨O⟩}{⟨C⟩}{⟨M_{1}⟩}{⟨M_{2}⟩}

Construit le ou les points d’intersection de la droite (AB) avec le cercle de centre O et de rayon OC. L’intersection entre un cercle et une droite donne en cas d’existence un ou deux points. En fait le cas tangent représente un point double au sens des racines d’un polynôme.

Le cercle est spécifié avec son centre et soit un point de sa circonférence, soit son rayon ou diamètre spécifié au moyen des paramètres Radius et Diameter et modulé par le paramètre coefficient multiplicatif

DistCoef.

\begin{matrix}O \\ A \\ B \\ C \\ I \\ D \\ E \\ F \\ G \\ H \\ J \end{matrix}

                                       \pstGeonode(-.9,.5){O}
                                       \pstGeonode(0,2){A}
                                       \pstGeonode[PosAngle=-135](-1,0){B}
                                       \pstGeonode[PosAngle=80](3,-1){C}
                                       \pstGeonode(-2,3){I}
                                       \pstCircleOA[linecolor=red]{O}{A}
                                       \pstInterLC[PosAngle=-80]{C}{B}{O}{A}{D}{E}
                                       \pstInterLC[PosAngleB=60, Radius=\pstDistAB{O}{D}]
                                         {I}{C}{O}{}{F}{G}
                                       \pstInterLC[PosAngleB=180, DistCoef=1.3,
                                         Diameter=\pstDistAB{O}{D}]
                                         {I}{B}{O}{}{H}{J}
                                       \pstCircleOA[linecolor=red, DistCoef=1.3,
                                         Diameter=\pstDistAB{O}{D}]{O}{}
                                       \psset{nodesep=-1}
                                       \pstLineAB[linecolor=green]{E}{C}
                                       \pstLineAB[linecolor=cyan]{I}{C}
                                       \pstLineAB[linecolor=magenta]{H}{I}

La position des points n’étant pas spécifiée, il faudra bien regarder si cela correspond à votre choix. Il arrive aussi, qu’après la modification de la position d’un point, un dessin ne représente plus la même figure à cause de l’échange entre les deux points d’une intersection droite-cercle comme le montre l’exemple suivant sur le léger déplacement du point C :

\begin{matrix}O \\ A \\ B \\ C \\ D \\ E \end{matrix}  \begin{matrix}O \\ A \\ B \\ C \\ D \\ E \end{matrix}

Ce traitement se retrouve pour les points d’intersections entre deux cercles.

1.5.3 Cercle–cercle

\pstInterCC[⟨par⟩]{⟨O_{1}⟩}{⟨B⟩}{⟨O_{2}⟩}{⟨C⟩}{⟨M_{1}⟩}{⟨M_{2}⟩}

Fonction au comportement identique à la précédente. Les paramètres booléens CodeFigA et CodeFigB permettent de faire apparaître les arcs au niveau des intersections. Par cohérence CodeFig permet de faire apparaître les deux arcs. Afin de contrôler dans quel sens vont-être ces arcs, les paramètres booléens CodeFigAarc et CodeFigBarc permettent de choisir dans le sens direct ou indirect.

\begin{matrix}O \\ A \\ B \\ C \end{matrix} ; D ; E ; F

                              \rput{10}{%
                                \pstGeonode(1,-1){O}
                                \pstGeonode[PosAngle=-90](2,1){A}
                                \pstGeonode[PosAngle=-90](2,0.1){B}
                                \pstGeonode[PosAngle=90](2.5,1){C}}
                              \pstCircleOA[linecolor=red]{C}{B}
                              \pstInterCC[PosAngleA=135, CodeFigA=true, CodeFigAarc=false,
                                CodeFigColor=magenta]{O}{A}{C}{B}{D}{E}
                              \pstInterCC[PointSymbolB=none, PosAngleA=170, CodeFigA=true,
                                CodeFigAarc=false, CodeFigColor=green]{B}{E}{C}{B}{F}{G}

Et un deuxième exemple plus complet, intégrant les spécifications de cercle avec des rayons et des diamètres. Il existe dans ce cas des paramètres RadiusA, RadiusB, DiameterA et DiameterB. Toutefois, même dans le cas où le diamètre est spécifié, il faut donner un centre. On ne peut pas spécifier un cercle avec deux points diamétralement opposé.

\begin{matrix}O \\ Ω \\ A \\ B \\ D \\ E \\ F \\ G \\ H \\ I \\ J \\ K \end{matrix}

\pstGeonode(1,-1){O}
\pstGeonode[PointName=\Omega](3,-1){Omega}
\psset{PointSymbol=square}
\pstGeonode[PosAngle=-90](0,3){A}
\pstGeonode[PosAngle=90](2,2){B}
\psset{PointSymbol=o}
\pstCircleOA[linecolor=red, DistCoef=1 3 10 div add,
             Radius=\pstDistAB{A}{B}]{O}{}
\pstCircleOA[linecolor=Orange, Diameter=\pstDistAB{A}{B}]{O}{}
\pstCircleOA[linecolor=Violet, Radius=\pstDistAB{A}{B}]{Omega}{}
\pstCircleOA[linecolor=Purple, Diameter=\pstDistAB{A}{B}]{Omega}{}
\pstInterCC[DistCoef=1 3 10 div add, RadiusA=\pstDistAB{A}{B},
            DistCoef=none, RadiusB=\pstDistAB{A}{B}]
  {O}{}{Omega}{}{D}{E}
\pstInterCC[DiameterA=\pstDistAB{A}{B}, RadiusB=\pstDistAB{A}{B}]
  {O}{}{Omega}{}{F}{G}
\pstInterCC[DistCoef=1 3 10 div add, RadiusA=\pstDistAB{A}{B},

            DistCoef=none, DiameterB=\pstDistAB{A}{B}]
  {O}{}{Omega}{}{H}{I}
\pstInterCC[DiameterA=\pstDistAB{A}{B}, DiameterB=\pstDistAB{A}{B}]
  {O}{}{Omega}{}{J}{K}

Chapitre 2

Galerie d’exemples

2.1 Géométrie élémentaire

2.1.1 Tracé de la bissectrice

O A B C O_{′}

\pstGeonode[PosAngle=180](0,1){O}
\pstGeonode[PosAngle=130](1,4){A}
\pstGeonode[PosAngle=-90](2,0){B}
\pstLineAB[nodesepB=-1, linecolor=red]{O}{A}
\pstLineAB[nodesepB=-1, linecolor=red]{O}{B}
\pstInterLC[PointSymbolB=none, PosAngleA=-45]
   {O}{B}{O}{A}{C}{G}
\pstArcOAB[arcsepA=-1, arcsepB=-1, linecolor=green,
   linestyle=dashed]{O}{C}{A}
\pstInterCC[PointSymbolB=none, PosAngleA=100]
  {A}{O}{C}{O}{O'}{OO}
\pstArcOAB[arcsepA=-1, arcsepB=-1, linecolor=blue,
  linestyle=dashed]{A}{O'}{O'}
\pstArcOAB[arcsepA=-1, arcsepB=-1, linecolor=blue,
  linestyle=dashed]{C}{O'}{O'}
\pstLineAB[nodesepB=-1, linecolor=cyan]{O}{O'}
\psset{linecolor=magenta, doubleline=true}
\pstMarkAngle{C}{O}{O'}{}
\pstMarkAngle[MarkAngleRadius=.5]{O'}{O}{A}{}

2.1.2 Angle droit allemand

En Allemagne, on utilise une autre convention pour les angles droits (remarque de U. Dirr).

2.1. GÉOMÉTRIE ÉLÉMENTAIRE  CHAPITRE 2. GALERIE D’EXEMPLES

A B C·

                              \pstTriangle[PosAngle=-90, PosAngleC=90]
                                (1,2){A}(4,2){B}(1,5){C}
                              \pstMarkAngle[MarkAngleRadius=.5, LabelSep=.3]
                                {B}{A}{C}{\boldmath$\cdot$}

2.1.3 Droites remarquables du triangle

A B C IJ K O C_{′} A_{′} B_{′} H G

\pstTriangle[PosAngleA=180, PosAngleB=80](-2,-1){A}(1,2){B}(2,0){C}
% les médiatrices
{% encapsulation de modif paramètres
  \psset{linestyle=none, PointSymbolB=none}
  \pstMediatorAB{B}{A}{I}{IP}
  \pstMediatorAB[PosAngleA=-40]{A}{C}{J}{JP}
  \pstMediatorAB[PosAngleA=75]{B}{C}{K}{KP}
}% fin
\pstInterLL[PointSymbol=square, PosAngle=-170]{I}{IP}{J}{JP}{O}
{% encapsulation de modif paramètres
  \psset{nodesep=-.8, linecolor=green}
  \pstLineAB{O}{I}\pstLineAB{O}{J}\pstLineAB{O}{K}
}% fin

\pstCircleOA[linecolor=red]{O}{A}
% pour que le symbol de O soit sur et non sous les droites
\psdot[dotstyle=square](O)
% les hauteurs et l'orthocentre
\pstProjection[PosAngle=95]{B}{A}{C}{C'}
\pstProjection{B}{C}{A}{A'}
\pstProjection[PosAngle=-90]{A}{C}{B}{B'}
\psset{linecolor=blue}\ncline{A}{A'}\ncline{C}{C'}\ncline{B}{B'}
\pstInterLL[PointSymbol=square]{A}{A'}{B}{B'}{H}
% les médianes et le centre de gravité
\psset{linecolor=magenta}\ncline{A}{K}\ncline{C}{I}\ncline{B}{J}
\pstCGravABC[PointSymbol=square, PosAngle=95]{A}{B}{C}{G}

2.1.4 Cercle d’Euler

A B C IJ K O C_{′} A_{′} B_{′} H ω // // ∧ ∧ ∪ ∪

\pstTriangle[PosAngleA=180, PosAngleC=0](-2,-1){A}(1,2){B}(2,-1){C}
{% encapsulation de modif paramètres
  \psset{linestyle=none, PointSymbolB=none}
  \pstMediatorAB{B}{A}{I}{IP}
  \pstMediatorAB[PosAngleA=-40]{A}{C}{J}{JP}
  \pstMediatorAB[PosAngleA=75]{B}{C}{K}{KP}
}% fin
\pstInterLL[PointSymbol=square, PosAngle=-170]{I}{IP}{J}{JP}{O}
{% encapsulation de modif paramètres
  \psset{nodesep=-.8, linecolor=green}
  \pstLineAB{O}{I}\pstLineAB{O}{J}\pstLineAB{O}{K}
}% fin
\psdot[dotstyle=square](O)
\pstProjection[PosAngle=95]{B}{A}{C}{C'}
\pstProjection{B}{C}{A}{A'}
\pstProjection[PosAngle=-90]{A}{C}{B}{B'}
\psset{linecolor=blue}\ncline{A}{A'}\ncline{C}{C'}\ncline{B}{B'}

\pstInterLL[PointSymbol=square]{A}{A'}{B}{B'}{H}
\psset{linecolor=magenta}\ncline{A}{K}\ncline{C}{I}\ncline{B}{J}
% le cercle d'Euler (centre au milieu de [OH])
\pstMiddleAB[PointSymbol=o, PointName=\omega]{O}{H}{omega}
\pstCircleOA[linecolor=Orange, linestyle=dashed, dash=5mm 1mm]{omega}{B'}
\psset{PointName=none}
% il passe par le milieu des segments joignant l'orthocentre et les sommets
\pstMiddleAB{H}{A}{AH}\pstMiddleAB{H}{B}{BH}\pstMiddleAB{H}{C}{CH}
\pstSegmentMark{H}{AH}\pstSegmentMark{AH}{A}
\psset{SegmentSymbol=wedge}\pstSegmentMark{H}{BH}\pstSegmentMark{BH}{B}
\psset{SegmentSymbol=cup}\pstSegmentMark{H}{CH}\pstSegmentMark{CH}{C}

2.1.5 Orthocentre et hyperbole

L’orthocentre d’un triangle dont les points sont situés sur les branches de l’hyperbole ℋ : y = a/x appartient à cette hyperbole.

\begin{matrix}A \\ B \\ C \\ H \end{matrix}

\psset{linecolor=blue, linewidth=2\pslinewidth}
\psplot{-10}{-.1}{1 x div}
\psplot{.1}{10}{1 x div}
\psset{linewidth=.5\pslinewidth}
\pstTriangle[linecolor=magenta, PosAngleB=-85, PosAngleC=-90]
  (.2,5){A}(1,1){B}(10,.1){C}
%\pstTriangle[linecolor=magenta, PosAngleB=-135](.2, 5){A}(-1,-1){B}(10,.1){C}
\psset{PointSymbol=none, linecolor=magenta, CodeFig=true, CodeFigColor=red}
\pstProjection[PosAngle=-90]{B}{A}{C}{C'}
\ncline[nodesepA=-1, linestyle=dashed, linecolor=magenta]{C'}{B}
\pstProjection{B}{C}{A}{A'}

\ncline[nodesepA=-1, linestyle=dashed, linecolor=magenta]{A'}{B}
\pstProjection[PosAngle=90]{A}{C}{B}{B'}
\pstInterLL[PosAngle=135, PointSymbol=square]{A}{A'}{B}{B'}{H}
\psset{linecolor=green, nodesep=-1}
\pstLineAB{A}{H}\pstLineAB{B'}{H}\pstLineAB{C}{H}
\psdot[dotstyle=square](H)

2.1.6 Polygone régulier à 17 côtés

Remarquable construction due à K. F. Gauss. Il a démontré qu’il était possible de construire les polygones à 2^{2^{p}} + 1 côtés, le suivant est donc à 257 côtés !

O P_{1} B J E F // // K N_{4} N_{6} P_{6} P_{13} ∧ ∧ P_{4} P_{15} ∪ ∪ P_{5} P_{14} // // P_{3} P_{16} // P_{2} P_{17} /// /// P_{7} P_{12} ∘ ∘ P_{8} P_{11} × × P_{9} P_{10} ≡ ≡

2.1.7 Tangentes de cercles

Construction des tangentes à un cercle passant par un point donné.

\begin{matrix}O \\ M \\ A \\ B \end{matrix}

Construction des tangentes à deux cercles.

O O_{′}

2.1.8 Point de Fermat d’un triangle

Figure de Manuel Luque.

2.1.9 Cercles ex-insrits et inscrit d’un triangle

Les centres de ces cercles sont les intersections des bissectrices intérieures et extérieures.

A B C I I_{C} I_{B} I_{A} I_{1} I_{2} I_{3} I_{1C} I_{1B} I_{1A} I_{2B} I_{2C} I_{2A} I_{3A} I_{3C} I_{3B}

2.2. QUELQUES LIEUX DE POINTS  CHAPITRE 2. GALERIE D’EXEMPLES

2.2 Quelques lieux de points

2.2.1 Parabole

La parabole est l’ensemble des points situés à égale distance d’un point : le foyer, et d’une droite : la directrice.

O A B // // B

\psset{linewidth=1.2\pslinewidth}\renewcommand{\NbPt}{11}
\pstGeonode(5,4){O}
\pstGeonode[PosAngle=-90](1,2){A}\pstGeonode[PosAngle=-90](9,1.5){B}
\newcommand{\Parabole}[1][100]{%
  \pstLineAB[nodesep=-.9, linecolor=green]{A}{B}
  \psset{RotAngle=90, PointSymbol=none}
  \multido{\n=1+1}{\NbPt}{%
    \pstHomO[HomCoef=\n\space \NbPt\space 1 add div]{A}{B}{M\n}
    \pstMediatorAB[linestyle=none]{M\n}{O}{M\n_I}{M\n_IP}
    \pstRotation{M\n}{A}{M\n_P}
    \pstInterLL[PointSymbol=square, PointName=none]{M\n_I}{M\n_IP}{M\n}{M\n_P}{P_\n}
    \ifnum\n=#1
      \bgroup
      \pstRightAngle{A}{M\n}{M\n_P}
      \psset{linewidth=.5\pslinewidth, nodesep=-1, linecolor=blue}
      \pstLineAB{M\n_I}{P_\n}\pstLineAB{M\n}{P_\n}
      \pstRightAngle{P_\n}{M\n_I}{M\n}
      \psset{linecolor=red}\pstSegmentMark{M\n}{M\n_I}\pstSegmentMark{M\n_I}{O}
      \egroup
    \fi}}%fin multido-newcommand
\Parabole[2]\pstGenericCurve[linecolor=magenta]{P_}{1}{\NbPt}
%% Nouvelle parabole avec un nouveau point B
\pstGeonode[PointSymbol=*, PosAngle=-90](10,3.5){B}
\psset{linestyle=dashed}
\Parabole\pstGenericCurve[linecolor=magenta]{P_}{1}{\NbPt}

2.2.2 Hyperbole

L’hyperbole est composée des points dont la différence des distances avec les foyers est constant.

O F F_{′} S S_{′} A_{1} A_{2} Ψ

2.2.3 Cycloïde

La roue roule de M à A. Les points du cercle parcourent des cycloïdes. L’intérêt de cet exemple est de faire coïncider les points de rebroussement avec des points calculés.

\begin{matrix}M \\ A \end{matrix}

\renewcommand{\NbPt}{11}\psset{linewidth=1.2\pslinewidth}%
\pstGeonode[PointSymbol=none](0,1){O}
\pstGeonode[PosAngle=180]{M}
%% 12*pi=12.5663706144
\pstGeonode(12.5663706144,0){A}
\pstTranslation[PointSymbol=none]{M}{A}{O}{B}%
\multido{\n=1+1}{\NbPt}{%
  \pstHomO[HomCoef=\n\space \NbPt\space 1 add div,
           PointSymbol=none]{O}{B}{O\n}%
  \pstProjection[PointSymbol=none]{M}{A}{O\n}{P\n}%
  %\pstCircleOA[linestyle=dashed, linecolor=red]{O\arabic{i}}{P\arabic{i}}%
  \pstCurvAbsNode[PointSymbol=square, PointName=none,CurvAbsNeg=true]%
    {O\n}{P\n}{M\n}{\pstDistAB{O}{O\n}}
  \ifnum\n=2%affichage du second cercle
    \bgroup
    \pstCircleOA{O\n}{M\n}%
    \psset{linecolor=magenta, linewidth=1.5\pslinewidth}
    \pstArcnOAB{{O\n}}{P\n}{M\n}%
    \ncline{O\n}{M\n}\ncline{P\n}{M}
    \egroup
  \fi}% fin du multido
\psset{linecolor=blue, linewidth=.5\pslinewidth}
\pstGenericCurve[GenCurvFirst=M]{M}{1}{6}
\pstGenericCurve[GenCurvLast=A]{M}{6}{\NbPt}
\psset{linecolor=green, linewidth=1.5\pslinewidth}
%% juste pour la vérification
%\parametricplot{0}{12.5663706144}
%  {t t 3.1415926 div 180 mul sin sub 1 t 3.1415926 div 180 mul cos sub}

2.2.4 Hypocycloïdes (astroïde et deltoïde)

Une roue roule à l’intérieure d’un cercle et selon le rapport des rayons, on obtient une astroïde, une deltoïde et dans le cas générale des hypocycloïdes.

O  O

\newcommand{\HypoCyclo}[4][100]{%
  \def\R{#2}\def\petitR{#3}\def\NbPt{#4}% définitions locales pour lisibilité
  %% Selon la valeur de R sur petitR :
  %%     4 une astroïde -- 3 une deltoïde -- 2 un diamètre (!)
  \def\Anglen{\n\space 360 \NbPt\space 1 add div mul}
  \pstGeonode{O}\pstCircleOA[Radius=\pstDistVal{\R}]{O}{}
  \pstGeonode[PointName=none](\R;0){P}
  \pstHomO[HomCoef=\petitR\space\R\space div, PointSymbol=none]{P}{O}{M}
  \multido{\n=1+1}{\NbPt}{%
    \pstRotation[RotAngle=\Anglen, PointSymbol=none]{O}{M}{M\n}
    \rput(M\n){\pstGeonode[PointSymbol=none](\petitR;0){Q}}
    \pstRotation[RotAngle=\Anglen, PointSymbol=none]{M\n}{Q}{N}
    \pstRotation[RotAngle=\n\space -360 \NbPt\space 1 add div
    mul \R\space\petitR\space div mul, PointName=none]%
    {M\n}{N}{N\n}
    \ifnum\n=#1
      \pstCircleOA{M\n}{N\n}\ncline{M\n}{N\n}%
      \psset{linecolor=red, linewidth=2\pslinewidth}
      \pstArcOAB{M\n}{N\n}{N}\pstArcOAB{O}{P}{N}
    \fi}}%fin multido-newcommand
\HypoCyclo[4]{4}{1}{27}
\psset{linecolor=blue, linewidth=1.5\pslinewidth}
%% il est préférable de mettre les quatre branches séparément à cause
%% des points de rebroussement
\pstGenericCurve[GenCurvFirst=P]{N}{1}{7}
\pstGenericCurve{N}{7}{14}\pstGenericCurve{N}{14}{21}
\pstGenericCurve[GenCurvLast=P]{N}{21}{27}

2.3. ENVELOPPES DE DROITES ET DE CERCLES  CHAPITRE 2. GALERIE D’EXEMPLES

2.3 Enveloppes de droites et de cercles

2.3.1 Coniques

On considère un cercle et un point A extérieur à ce cercle. L’ensemble des médiatrices des segments formés par A et les points du cercle forme les deux coniques selon la place de A : s’il est à l’intérieur du cercle l’ellipse, à l’extérieur l’hyperbole. A et le centre du cercle en sont les foyers (figure d’O. Reboux).

A

\psset{linewidth=0.4pt,PointSymbol=+}
\pstGeonode[PosAngle=-90](4;132){A}
\pstGeonode[PointName=none]{O}
\pstGeonode[PointName=none](5,0){O'}
\pstCircleOA{O}{O'}
\multido{\n=5+5}{72}{%
  \pstGeonode[PointSymbol=none](5;\n){M_\n}
  \pstMediatorAB[PointSymbol=none, nodesep=-15,linecolor=magenta]
    {A}{M_\n}{I}{J}}% fin multido

2.3.2 Cardioïde

La cardioïde est l’enveloppe des cercles centrés sur un cercle et passant par un point fixé de ce cercle.

2.4. HOMOTHÉTIES ET FRACTALES  CHAPITRE 2. GALERIE D’EXEMPLES

\psset{linewidth=0.4pt,PointSymbol=x,nodesep=0,linecolor=magenta}
\pstGeonode[PointName=none]{O}
\pstGeonode[PointName=none](2,0){O'}
\pstCircleOA[linecolor=black]{O}{O'}
\multido{\n=5+5}{72}
{%
  \pstGeonode[PointSymbol=none](2;\n){M_\n}
  \pstCircleOA{M_\n}{O'}}

2.4 Homothéties et fractales

2.5. GÉOMÉTRIE HYPERBOLIQUE : TRIANGLE ET SES HAUTEURS

CHAPITRE 2. GALERIE D’EXEMPLES

\begin{matrix}A_{0} \\ B_{0} \\ D_{0} \\ C_{0} \end{matrix}

\pstGeonode[PosAngle=0](2,2){A_0}%
\pstGeonode[PosAngle=90](-2,2){B_0}%
\psset{RotAngle=90}
\pstRotation[PosAngle=270]{A_0}{B_0}{D_0}%
\pstRotation[PosAngle=180]{D_0}{A_0}{C_0}%
\pspolygon(A_0)(B_0)(C_0)(D_0)%
\psset{PointSymbol=none, HomCoef=.2}
\multido{\n=1+1,\i=0+1}{20}{%
  \pstHomO[PosAngle=0]{B_\i}{A_\i}{A_\n}
  \pstHomO[PosAngle=90]{C_\i}{B_\i}{B_\n}
  \pstHomO[PosAngle=180]{D_\i}{C_\i}{C_\n}
  \pstHomO[PosAngle=270]{A_\i}{D_\i}{D_\n}
  \pspolygon(A_\n)(B_\n)(C_\n)(D_\n)}% fin multido

2.5 Géométrie hyperbolique : triangle et ses hauteurs

Le comble pour de la géométrie euclidienne !

\begin{matrix}M \\ N \\ P \end{matrix}