Quadrilatère déformable dans Geogebra

Bonjour,
Je veux construire un quadrilatère convexe déformable, ayant deux ou trois points fixes.
Comment faire pour qu'il reste convexe au cours de la déformation ?
Ou, inversement, comment faire pour qu'un quadrilatère croisé déformable ne devienne pas convexe ?
A+
Deux officiers sortis de la même promotion de Saint-Cyr :
Lieutenants : amis ... Capitaines : camarades ... Commandants : collègues ... Colonels : rivaux... Généraux : ennemis mortels.

Réponses

  • Bonsoir,
    Pas évident. Je n'y arrive que pour deux sommets. On place $A$ et $C$ et on trace la droite $(AC)$. Appelons $f$ son équation. On définit alors le point $B$ par PointDans( MembreDroite (f) < MembreGauche (f) ). Idem pour $D$ avec le signe > la place de <.
  • Ludwig
    Modifié (November 2023)
    Oups non erreur : il faut tenir compte des équations de $(AB)$ et $(BC)$ pour placer $D$. Donc on place $A$, $B$ et $C$ et on place $D$ dans la bonne zone. Mais du coup il n'y a qu'un point qui varie comme il faut. Une zone se définit par : $a<b$ && $c<d$ && $e<f$.
  • Ludwig
    Modifié (November 2023)
    Trouvé, mais avec des scripts. Je doute que l'on puisse faire autrement. On place $A$, $B$, $C$ et $D$ et on trace les six droites $(AB)$, $(AC)$, etc. Puis on définit les régions dans lesquelles peuvent se déplacer chacun de ces points. Je les ai appelé zoneA, zoneB, zoneC et zoneD (voir fichier joint, à renommer en .ggb). L'astuce consiste maintenant à créer un point $A'$ dans zoneA : A' = PointDans (zoneA). Puis à écrire un script par actualisation sur ce point : SoitValeur (A,A'). On réitère la manip pour créer $B'$ dans zoneB, $C'$ dans zoneC et $D'$ dans zoneD, avec les scripts correspondants. Et on cache $A$, $B$, $C$ et $D$.
    Le point $A'$ se déplace dans la bonne zone, et le point $A$ le suit (il est constamment rendu égal à $A'$).
  • Une autre possibilité consiste à dire que le quadrilatère est convexe si et seulement si l'intersection de ses diagonales existe. On part donc de deux sommets $A$ et $B$, et d'un centre $I$. On place $C$ sur la demi-droite d'origine $I$ passant par le symétrique de $A$ par rapport à $I$, et $D$ sur la demi-droite d'origine $I$ passant par le symétrique de $B$ par rapport à $I$ :
     
    C'est plus simple, mais le déplacement des points $C$ et $D$ n'est pas quelconque. Et celui de $A$ influe sur celui de $C$.. mais on peut bouger le centre.
    Peut-être qu'on peut regarder aussi du côté de la géométrie logique.
  • Ludwig
    Modifié (November 2023)
    Une possibilité sans script, un peu longue à mettre en oeuvre. Je détaille la technique dans un autre cas : on se donne trois points $A$, $B$, $C$ et on va construire un quadrilatère qui reste convexe, ayant ces trois points pour sommets, et le quatrième qui n'est pas forcément directement manipulable à la souris. Mais cela est peut-être suffisant.
    On trace la droite $(BC)$ et on récupère son équation sous la forme d'une fonction à deux variables : $a$ = membredroite($f$) - membregauche($f$), où $f$ est l'équation de la droite donnée par GeoGebra. 
    On calcule le nombre $k = sgn(a(x(A), y(A))*a(x(D), y(D)))$ et on définit le point $F = 1 / 2 (-D (-1 + k) + E (1 + k))$, $E$ étant le point d'intersection des droites $(AD)$ et $(BC)$.
    De sorte que si $A$ et $D$ sont du même côté de $(BC)$ alors $F=E$ et sinon $F=D$. On trace alors le quadrilatère $ABFC$ :
    Ce n'est pas tout à fait ce qui est demandé je pense, mais cela peut être utile. Bien sûr il faut poursuivre la construction pour que le quatrième sommet "s'écrase" sur la frontière dès que $D$ sort de sa zone de convexité. Lorsque ce sommet s'est écrasé sur la frontière ce n'est plus lui qui est directement manipulable à la souris, mais il l'est quand même par l'intermédiaire de $D$.
    Bouger $D$ dans le fichier joint (à renommer en .ggb) pour voir ce que cela donne.

    EDIT : il vaut mieux définir $E$ comme étant le projeté orthogonal de $D$ sur $(BC)$.
Connectez-vous ou Inscrivez-vous pour répondre.