Rotation étendue

Rousseau-Wallon shared this question 9 months ago
Answered

Bonjour,

J'ai 4 point sur un cercle, chacun peut se déplacer sur l'arc reliant ses deux voisins.

Par exemple A peut se déplacer sur l'arc BD.

Comment faire pour que A puisse pousser B lorsqu'il arrive à son contact ?

Pousser D aussi, jusqu'à pousser C, puis D.

Pareil pour les autres points.


(script sur chacun des points)

Comments (20)

photo
1

voir ci-joint

photo
1

Bonsoir,

un premier jet avec des scripts dans chacun des points :

ça semble fonctionner MAIS un point ne peut que déplacer un de ses voisins... et non le suivant...

...

Faudrait peut être alors être plus précis sur les conditions utilisées...

photo
1

solution pour 3 points sur un segment :

photo
1

My solution with circle and variable points number.

Without displacement of the two neighbors (maybe later)

see text in the attachment

photo
1

Pour trois points sur un cercle il y a une solution complète adaptée de celle du segment :

- on range les trois points dans l'ordre de leurs angles au centre ;

- les scripts sur les points dépendent de leur position relative, il y a donc 9 scripts en tout à écrire.

Mais là j'ai pas le temps.

photo
1

pour 3 points je n'y arrive pas

j'ai ça mais c'est pas terrible :

Files: bof.ggb
photo
1

finalement c'est pas si mal, car on peut "passer à travers" un point en se déplaçant vite.

Dans ton fichier "poussepousse", dans la commande :

Trier({(ParamètreChemin(A), 1), (ParamètreChemin(B), 2), (ParamètreChemin(C), 3), (ParamètreChemin(D), 4)})


je ne comprends pas l'intérêt d'ajouter 1, 2 3 4 en ordonnées avant de trier

Files: bof+.ggb
photo
1

Bon pour mon retour sur le forum,ce fichier sans scripts à tester correspond t-il à vos attentes?

photo
1

non car seul A agit sur les autres points.

de plus, compter les angles à partir d'une position de départ ne marche pas. car tout est remis à zéro quand A est au départ.

J'ai essayé en comptant les angles à partir d'une position mobile, mais je n'y arrive pas. Il y a toujours un moment où s'effectue une "remise à zéro"

photo
1

Le problème est que lorsque onUpdate est traité, le point affecté (par exemple "E") est quand même déplacé et le GGB est trop lent à traiter. Mais aussi cette solution n'est que presque 100% OK.

photo
1

Et voici une autre solution qui je crois fonctionne à n'importe quelle vitesse d'un point (aussi n'importe quelle performance du système). Ceci tant que le point s'est déplacé de moins de 180° dans le temps entre 2 cycles "onUpdate" (Je ne pense pas que ce soit possible manuellement.)

Si (par exemple) le point E a franchi un autre point pour la première fois, alors Eo n'a pas (encore) franchi le même point. Ce n'est qu'ensuite, lorsque le traitement dans onUpdate est terminé, que le point Eo suit le point E. La direction du mouvement n'a pas d'importance car Eo est toujours "derrière" le point E.

Note: La redondance du code doit encore être optimisée.

photo
1

en fait ça n'est pas tout à fait ce que je veux.

je veux qu'un point puisse en pousser un autre, et s'en détacher pour aller dans l'autre direction... pour pousser un autre points, deux autres points, etc

photo
1

solution pour 2 points ?

j'ai mis la condition avec les angles de 90° et 270° car sinon l'intersection de [OA) avec [BB, B] n'est plus défini si BB est le symétrique de B par rapport à O.

problème : quand on change de point, il arrive que A devienne égal à B et réciproquement, mais pas tout le temps. je ne sais pas pourquoi.

sinon cette solution est faisable pour 3 points au moins

Files: AAA2.ggb
photo
1

je pense que là ça marche,

il fallait ajouter BB = B au début du script de A

photo
1

Pour deux points, c'est facile...

Et pour trois points ?

Et quatre ? (requête initiale !)

...

photo
1

la solution pour deux points est facile ?

je ne trouve pas non, peut-être en as-tu une de plus simple ?


solution pour 3 points, adaptée de celle pour 2 :

photo
photo
1

et la solution pour 4

contrat rempli !


(méthode généralisable à n points)

photo
1

hum..

il semblerait que l'ordre des points ne soit pas conservé..

une demi-solution pour 4 donc

photo
1

ah mais oui

il y a une logique dans l'ordre des points

d'où le petit jeu suivant : mettre les couleurs dans l'ordre bleu jaune noir orange

Files: jeu.ggb
photo
1

j'ai simplifié les scripts

mais pas moyen de conserver l'ordre des points

il doit bien y avoir un truc pourtant

Files: jeu2.ggb
© 2019 International GeoGebra Institute