Bonjour,
je débute en Python et je cherche à programmer un "billard circulaire" à l'aide de Turtle. Je n'arrive pas à déterminer l'angle à imposer à turtle (qui conçoit les angles bizarrement je trouve) de la bille sur les rebords du billard. Voici la partie du programme concernée :(je suis désolée si ce n'est pas le bon format)
while nbrebonds>=0:
forward(1)
if (distance(0,y)>rayon):
print(distance(0,y))
left(2*angleinitial) #j'ai mis cet angle comme test mais il ne fonctionne pas
forward(1)
nbrebonds+=(-1)
J'aimerais beaucoup réussir ce programme dans le cadre de mon TIPE, merci beaucoup !
# Commencer par le commencement
Posté par foobarbazz . Évalué à 1.
Est-ce que tu as essayé de faire un schéma ?
[^] # Re: Commencer par le commencement
Posté par prunebanane . Évalué à 1.
Oui bien sûr, je connais mathématiquement l'angle de rebond, le seul problème est de le donner à turtle car l'angle qu'il prend en argument doit se faire faire la gauche ou la droite et selon une parallèle à l'axe des abscisses, or pour un cercle la bille rebondit selon la tangente au cercle dont la normale n'est pas parallèle à cet axe…
# se renseigner sur les calculs d'angle de rebond
Posté par NeoX . Évalué à 2.
il y a surement plein de source sur internet,
mais de memoire et generalement, quand un objet arrive en ligne droite, sur une surface, son angle de rebond est directement "symetrique" à son angle d'arrivée.
pour la mise en forme de ton code il faut encadrer ton code avec les balises
```python
ici ton code
avec les espaces de debut
de ligne
```
ce qui va donner l'affichage
[^] # Re: se renseigner sur les calculs d'angle de rebond
Posté par prunebanane . Évalué à 1.
Je n'ai pas trouvé de sources qui utilisent le module turtle. La plupart utilise d'autres interfaces graphiques ou il suffit juste d'inverser la composante x ou y de la vitesse pour produire le rebond, or il n'y a pas cette fonction sur turtle.
Merci !
# Piste
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 7.
Faire tourner la tortue vers la gauche ou vers la droite est approprié lorsqu'on sait spécifiquement de quel angle on veut la faire tourner. Ce n'est pas vraiment ton cas ici, cet angle dépendant de l'angle d'incidence.
Il va t'être indispensable d'enregistrer dans une variable le cap de la tortue avant rebond. Ensuite, à l'impact, il va falloir déterminer la direction de la tangente ou de la normale (une belle application de trigonométrie : tu connais l'abscisse et l'ordonnée du point d'impact, ainsi que le centre et le rayon du cercle, donc plus qu'il n'en faut pour calculer l'angle du point d'impact dans ce cercle !), puis calculer le nouveau cap. Enfin, tu pourras utiliser la fonction
setheading()
pour fixer le nouveau cap de la tortue.Au fait, dans ton code, qu'est-ce que c'est que ce
y
qui apparaît dansdistance(0,y) > rayon
? Ton cercle n'est pas centré à l'origine ?# Par défaut… angles relatifs
Posté par lolop (site web personnel) . Évalué à 3.
Pas bizarre, c'est un angle par rapport à l'orientation de ta tortue.
Si besoin, j'ai un petit mémento turtle en ligne.
Soit tu restes en rotations relatives, mais il faut le prendre en compte, soit tu passes en angles absolus. Et comme indiqué, un petit schéma pour tes calculs aide pas mal.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Commentaire supprimé
Posté par imenz . Évalué à 0. Dernière modification le 26 mai 2018 à 10:07.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.