Quadrilatère déformable dans Geogebra — Les-mathematiques.net The most powerful custom community solution in the world

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+
Qui viole un oeuf tuera un boeuf. (Emmanuel Tank, Critique de la pure déraison

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 <.
  • Modifié (20 Nov)
    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$.
  • Modifié (20 Nov)
    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.
  • Modifié (21 Nov)
    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.
Success message!