Ce document décrit les constructions classiques et tours de main avec JavaSketchpad©
Il est réparti sur plusieurs pages, à cause du nombre important d'applets.
Les applets d'illustration montrent les éléments donnés en bleu, les éléments construits en rouge et les éléments intermédiaires (normalement "hidden") en d'autres couleurs.
Les codes fournis sont directement interprétables avec mon compilateur (genapp), sinon il faut transformer les éléments symboliques en leur numéro d'ordre dans la construction. Mais ils sont réduits à la seule partie démonstrative de la construction (les éléments de base bleus n'y sont pas définis).
Le code complet est de toute façon disponible dans le source de la page !
Comme il s'agit d'astuces, utilisant parfois des effets de bords, ceci est valable avec la version actuelle de JavaSketchpad (DR4.07) et pourra évoluer.

Table des matières

1. Constructions classiques
Copies de distances et d'angles, médiatrices, bissectrices, trisectrices, polygones, orientations, intersections.
2. Proportions, similitudes
3. Cercles
Cercles, arcs de cercles, secteurs, tangentes, tangentes communes
4. Cercles - suite
Pole, polaire, axe radical, faisceaux de cercles, inversion
5. Points remarquables d'un triangle
Centre de gravité, orthocentre, cercle circonscrit, droite et cercle d'Euler, Cercles inscrit et exinscrits,
Points de Nagel, de Gergonne, de Spieker, de Lemoine...
6. Autres points remarquables d'un triangle
Conjugué isogonal, conjugué isotomique, points de Fermat, de Brocard ...
Points en coordonnées barycentriques
7. Coniques et autres courbes
8. Constructions conditionnelles
9. Calculs et mesures - Systèmes de coordonnées

 


1. Constructions classiques

Milieu de AB

Bien entendu ne jamais utiliser Midpoint(segment), car le segment serait indéfini si A=B, mais :

{M} Dilation (A,B,0.5);
(inutile de fournir une applet de démonstration tout de même !)

Médiatrice de AB

Désolé, votre navigateur n'est pas compatible Java.

{ si pas déja tracé, ou Segment }
{ab} Line (A,B)[hidden];
{M} Dilation (A,B,0.5);
    Perpendicular (ab,M);

Définition d'une droite par position et direction

Désolé, votre navigateur n'est pas compatible Java. Plutôt que de définir deux points libres, la position et la direction de la droite sont définies indépendemment par :

{O} Point (100,100);
{r} Translation (O,70,0)[hidden];
{C} Circle (O,r)[hidden];
{u} Point on object (C, -0.7);
{d} Line (O,u)[red];

Copie d'un angle

Désolé, votre navigateur n'est pas compatible Java. Reporter l'angle donné AOB en DCm, C,D donnés.

{Cd Ray (D,C) }
{Cm} Rotation/MarkedAngle (Cd,C,A,O,B);
C'est la définition même de la fonction !
Ray remplaçable par un Point, Line etc...

Copie d'une distance

Désolé, votre navigateur n'est pas compatible Java. Reporter la distance AB donnée le long de la droite CD, à partir de C.

{B!} VectorTranslation (B,A,C)[hidden];
{M} Rotation/MarkedAngle (B!,C,B!,C,D);
{M!} Dilation (M,C,-1);

Polygone régulier

En l'absence de boucles et de macro, il faut décrire tous les sommets et côtés explicitement.
A moins de vouloir montrer explicitement une telle construction, on n'utilise généralement pas les constructions "à la règle et au compas" lorsqu'elles existent.
On calcule directement les angles, ou plus simplement avec leur valeur numérique approchée, même pour un simple triangle équilatéral !
Exemple : pentagone régulier.
Désolé, votre navigateur n'est pas compatible Java. De centre et un sommet donnés

{A1} Rotation (A0,O, 1.256637061435917295385);
{c0} Segment (A0,A1)[red];
{A2} Rotation (A1,O, 1.256637061435917295385);
{c1} Segment (A1,A2)[red];
{A3} Rotation (A2,O, 1.256637061435917295385);
{c2} Segment (A2,A3)[red];
{A4} Rotation (A3,O, 1.256637061435917295385);
{c3} Segment (A3,A4)[red];
{c4} Segment (A0,A4)[red];
Un côté donné

Désolé, votre navigateur n'est pas compatible Java.

{ calcul 3pi/5 }
{c} Distance (A0,A1,0,0,' ')[hidden];
{a} Calculate (0,0,' ','1@atan12*5/')(c)[hidden];
{c0} Segment (A0,A1);
{A2} Rotation/MeasuredAngle (A0,A1,a);
{c1} Segment (A1,A2);
{A3} Rotation/MeasuredAngle (A1,A2,a);
{c2} Segment (A2,A3);
{A4} Rotation/MeasuredAngle (A2,A3,a);
{c3} Segment (A3,A4);
{c4} Segment (A0,A4);
Ici avec un calcul explicite de 3π/5.
La distance c est inutile, juste pour avoir un élément à donner aux paramètres obligatoires de Calculate.
(on peut la remplacer par n'importe quelle paramètre ou mesure existante par ailleurs dans la construction)

On peut avoir intérêt à calculer directement les sommets plutôt que de cumuler les erreurs...
Désolé, votre navigateur n'est pas compatible Java. Exemple : Hexagone

{A1} Rotation (A0,O, 1.047197551196597746)[label('A1'),red];
{c0} Segment (A0,A1)[red];
{A2} Rotation (A0,O, 2.0943951023931954923)[label('A2'),red];
{c1} Segment (A1,A2)[red];
{A3} Dilation (A0,O,-1)[label('A3'),red];
{c2} Segment (A2,A3)[red];
{A4} Rotation (A0,O, -2.0943951023931954923)[label('A4'),red];
{c3} Segment (A3,A4)[red];
{A5} Rotation (A0,O, -1.047197551196597746)[label('A5'),red];
{c4} Segment (A4,A5)[red];
{c5} Segment (A0,A5)[red];

Bisectrice de ABC

Désolé, votre navigateur n'est pas compatible Java. La construction simple suivante fonctionne sauf si l'angle vaut 180°

{A!} Rotation/MarkedAngle (A,O,A,O,B)[hidden];
{I} Dilation (A,A!, 0.5)[hidden];
{Oi} Ray (I,O)[red];

On peut remplacer Ray par Line, ou tracer le symétrique de I :
{I!} Dilation (I,O, -1)[hidden]; pour la bisectrice de l'angle >180°
La bisectrice extérieure est perpendiculaire à la bisectrice intérieure :
{Oj} Perpendicular (Oi,O);

Trisectrice de ABC

Désolé, votre navigateur n'est pas compatible Java. Il n'existe par contre pas de contruction conventionnelle des trisectrices.
On doit passer par la mesure et le calcul :

{a} Angle (A,O,B,0,0,' ')[hidden];
{a!} Calculate (0,0,' ','1@atanA*135/')(a)[hidden];
{A!} Rotation/MeasuredAngle (A,O,a!)[hidden];
{OA1} Ray (A!,O);
{OA2} Rotation (OA1,O, 2.0943951023931954923);
{OA3} Rotation (OA1,O, -2.0943951023931954923);
Les deux autres trisectrices sont à ±2π/3
Ne pas confondre avec les trisectrices de l'angle BOA, ni avec les trisectrices de l'angle supplémentaire

Orientation des droites

Désolé, votre navigateur n'est pas compatible Java. Il est nécessaire de tenir compte de l'orientation des droites et cercles dans JavaSketchpad.
Un Ray(A,B) est bien sûr orienté de B vers A (B est l'origine de la demi-droite)
Mais il en est de même pour les segments et les droites
Segment (A,B) est ainsi orienté de B vers A et Line (A,B) de B vers A itou.
Nota : Les Point on object sur les droites et segments sont ainsi avec B = 0 et A = 1.

Les transformations s'effectuent sur tous les points de la droite, l'origine et l'orientation s'en déduisent.

{OA} Ray (A,O);
{OA!} Rotation (OA,I,0.785398);
{A!} Point on object (OA!,1);
...

Une perpendiculaire est une rotation de -π/2
P est à 0.5 sur cette droite

De même une parallèle = rotation de 0 et P à 0.5

{OA} Ray (A,O);
{perp} Perpendicular (OA,P);
{O!} Point on object (perp,0);
{A!} Point on object (perp,1);
{para} Parallel (OA,P);
...

Un cercle est toujours orienté dans le sens horaire, et son origine à θ = 0 (horizontal dans le sens des x > 0)
Ainsi un Point on object sur un cercle est-il défini dans ce sens, à partir de ce point là.
Un point à 45° dans le sens trigonométrique est donc à -π/4 comme Point on object. (alors qu'il est obtenu par un Rotation de +π/4)

Intersections

Si l'intersection de droites, segments et demi-droites (Ray) ne pose pas de problème théorique, il n'en est pas de même avec les cercles pour lesquels se pose le choix du point d'intersection (Intersect1 ou Intersect2).
Signalons toutefois un bug de JavaSketchpad pour les intersections de segments quasi verticaux. On évitera ainsi au maximum les intersections de segments, en préférant toujours faire des intersections de droites, réservant les intersections avec des segments aux constructions conditionnelles.

Revenons aux intersections de cercles avec des droites et des cercles :

Dans le sens de parcours de la droite
- Intersect1 est le premier point rencontré
- Intersect2 est le deuxième point rencontré

Les intersections de cercles sont plus compliquées à prévoir :
Les intersections sont les intersections avec leur axe radical, l'orientation de celui-ci est définie par l'orientation de la ligne des centres,
En particulier les intersections sont échangées si on échange les deux cercles, inversant ainsi l'orientation de la ligne des centres.
De façon contre-intuitive, l'orientation de l'axe radical des cercles C1,C2 est celle de la perpendiculaire à O1→O2, de sorte que les points

{P1} Intersect1 (C1,C2);
et
{O1O2} Line (O2,O1)[hidden];
{axe} Perpendicular (O1O2,P1)[hidden];
{P1!} Intersect1 (axe,C2);
coïncident (noter l'inversion des indices dans Intersect et Line).

Désolé, votre navigateur n'est pas compatible Java. L'applet montre l'orientation des droites sous forme de deux demi-droites issues de leur origine, la demi-droite bleue étant dans le sens > 0.

{oo} Line (O2,O1);
{I1} Intersect1 (C1,C2)[label('1')];
{I2} Intersect2 (C1,C2)[label('2')];
{axe} Perpendicular (oo, I2);

{ab} Line B,A);
{P1} Intersect1 (ab,C2)[label('1')];
{P2} Intersect2 (ab,C2)[label('2')];

Seconde intersection

Désolé, votre navigateur n'est pas compatible Java. Etant donnée une droite d passant par A donné sur un cercle donné, construire le second point d'intersection de la droite avec le cercle.
Intersect1/Intersect2 est inutilisable ici : on obtient selon le sens de parcours de la droite le point A lui même !

{perp} Perpendicular (d, O)[hidden];
       Reflection (A,perp);
Intersect1/Intersect2 sont à réserver exclusivement au cas où on peut se rendre maître de l'orientation de la droite.

Etant donnée deux cercles se coupant en A, construire le second point d'intersection.
Désolé, votre navigateur n'est pas compatible Java. Idem, ne pas utiliser Intersect1/Intersect2 mais :

{oo} Line (O1, O2)[hidden];
     Reflection (A,oo);

Concourante ou parallèle

D'un point de vue projectif, "concourantes" ou "parallèles" sont équivallents.
Soit donc étant données deux droites d et d', dont on ne sait rien à priori (pouvant être aussi bien concourantes que parallèles), construire par P une droite qui leur est aussi concourante ou parallèle.
Le point d'intersection de d et d' étant impossible à déterminer, il faut utiliser une autre méthode.

Une méthode efficace ici est de tracer deux sécantes parallèles quelconques coupant les deux droites en AA' et BB' alors construire un triangle P'BB' semblable à PAA' donne un point P' sur la droite cherchée.
La seule difficulté est le choix des sécantes. Elles sont ainsi définies par des Point on object A, A' et B.
Un choix automatique de ces points est impossible car de trop nombreux cas particuliers se présentent.
Dans l'applet de démonstration A,A' et B sont les points qui servent aussi à définir d et d'.

Désolé, votre navigateur n'est pas compatible Java.

{A} Point on object (d,0)[hidden];
{B} Point on object (d,1)[hidden];
{A!} Point on object (d!,0)[hidden];
{aa} Line (A,A!)[green];
{bb} Parallel (aa,B)[green];
{B!} Intersect (bb,d!)[hidden];
{pa} Line (P,A)[hidden];
{pa!} Line (P,A!)[hidden];
{p!b} Parallel (pa,B)[hidden];
{p!b!} Parallel (pa!,B!)[hidden];
{P!} Intersect (p!b,p!b!)[hidden];
{pp} Line (P,P!);
La construction échoue si P est sur la droite AA', si A = A' ou si AA' = d, il faut alors choisir des points A,A' différents (à la main).
Si d = d', la construction n'a pas de sens.
Une méthode évitant ce choix manuel des points de définition utilise des constructions conditionnelles

 

Accueil Arithmétiques Géométrique Divers Thèmes Scripts Jeux Exercices Mail English version Sujet suivant