Calcul trigonométrique avec des coordonnés
Résolu/Fermé
Joseph_Hocquet
Messages postés
17
Date d'inscription
lundi 5 juillet 2021
Statut
Membre
Dernière intervention
28 août 2022
-
28 juil. 2021 à 11:22
Joseph_Hocquet Messages postés 17 Date d'inscription lundi 5 juillet 2021 Statut Membre Dernière intervention 28 août 2022 - 4 août 2021 à 13:31
Joseph_Hocquet Messages postés 17 Date d'inscription lundi 5 juillet 2021 Statut Membre Dernière intervention 28 août 2022 - 4 août 2021 à 13:31
Bonjour,
Je souhaite faire apparaitre un cube vue de face avec une perspective en point de fuite et pouvoir changer les coordonnés de ce point de fuite. Pour cela, j'utilise les calculs trigonométriques pour définir :
1) l'angle![](https://img-19.ccm2.net/6jZppgMSCIgR4HOW6Q_Eqrz16Ic=/440x/8b9a46dc00054fc0be6e75ed69e948e3/ccm-ugc/Capture_decran_2021-07-28_111019.png)
2) Les coordonnés du point partant du coin de la face de mon cube, en direction du point de fuite![](https://img-19.ccm2.net/Aynrg7MZaaIcOqmLV5ZxC9HHtFY=/440x/8f58e0b3f0334bc7b9ac8488be095b48/ccm-ugc/1.png)
Sur le papier, je n'ai pas l'impression qu'il y ai une erreur mais quand je le transpose sur python, les vecteurs ne vont pas du tout en direction du point de fuite...
Merci d'avance et j’espère avoir été assez claire.
Je souhaite faire apparaitre un cube vue de face avec une perspective en point de fuite et pouvoir changer les coordonnés de ce point de fuite. Pour cela, j'utilise les calculs trigonométriques pour définir :
1) l'angle
![](https://img-19.ccm2.net/6jZppgMSCIgR4HOW6Q_Eqrz16Ic=/440x/8b9a46dc00054fc0be6e75ed69e948e3/ccm-ugc/Capture_decran_2021-07-28_111019.png)
2) Les coordonnés du point partant du coin de la face de mon cube, en direction du point de fuite
![](https://img-19.ccm2.net/Aynrg7MZaaIcOqmLV5ZxC9HHtFY=/440x/8f58e0b3f0334bc7b9ac8488be095b48/ccm-ugc/1.png)
Sur le papier, je n'ai pas l'impression qu'il y ai une erreur mais quand je le transpose sur python, les vecteurs ne vont pas du tout en direction du point de fuite...
Merci d'avance et j’espère avoir été assez claire.
A voir également:
- Calcul trigonométrique avec des coordonnés
- Calcul moyenne excel - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Calcul km marche à pied gratuit - Télécharger - Sport
- Logiciel calcul surface terrain gratuit - Télécharger - Outils professionnels
6 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 28 juil. 2021 à 12:07
Modifié le 28 juil. 2021 à 12:07
Bonjour,
Sur le papier OK
Maintenant, il faudrait voir le code Python pour contrôler la façon dont c'est implémenté ...
L'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
Sur le papier OK
Maintenant, il faudrait voir le code Python pour contrôler la façon dont c'est implémenté ...
L'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
def test(): print('test') test()
Joseph_Hocquet
Messages postés
17
Date d'inscription
lundi 5 juillet 2021
Statut
Membre
Dernière intervention
28 août 2022
Modifié le 28 juil. 2021 à 16:52
Modifié le 28 juil. 2021 à 16:52
Merci d'avoir répondu aussi vite !
Je suis vraiment désolé... En retravaillant mon code pour le rendre plus lisible, j'ai remarqué que j'avais interverti 2 variables... J'ai réessayé et ça marche à merveille. Ça fait 2 mois que je bloquais dessus. Excuse-moi pour t'avoir fait perdre ton temps.
Voici le code pour ceux qui veulent aussi représenter un cube.
x et y sont les coordonnés du point du quel vous voulez faire partir votre vecteur.
La liste fuite contient les coordonnés du point de fuite.
Je suis vraiment désolé... En retravaillant mon code pour le rendre plus lisible, j'ai remarqué que j'avais interverti 2 variables... J'ai réessayé et ça marche à merveille. Ça fait 2 mois que je bloquais dessus. Excuse-moi pour t'avoir fait perdre ton temps.
Voici le code pour ceux qui veulent aussi représenter un cube.
x et y sont les coordonnés du point du quel vous voulez faire partir votre vecteur.
La liste fuite contient les coordonnés du point de fuite.
def carre() : x=random.randint(0,1280) y=random.randint(0,657) point=[] point.append(x+(cos(atan((fuite[1]-y)/(fuite[0]-x))))*30) # le "*30" c'est la longueur de mon vecteur point.append(y+(sin(atan((fuite[1]-y)/(fuite[0]-x))))*30) canv.create_line(x,y,point[0],point[1]) from tkinter import * from math import* import random fen=Tk() fen.geometry("1280x657") canv=Canvas(fen) canv.place(x=0,y=0,height=657,width=1280) fuite=[300,100] canv.create_rectangle(295,95,305,105) carre() fen.mainloop()
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 29 juil. 2021 à 16:58
Modifié le 29 juil. 2021 à 16:58
Bonjour,
Bizarre ton truc : ca affiche juste un petit rectangle et une petite ligne un peu plus loin ...
![](https://img-19.ccm2.net/qTY1M6eFiVnLpTb9c6bEZuhsxT0=/440x/ab88bf9913804d4eb564cc3b2b302c68/ccm-ugc/Capture.JPG)
En plus pour ne pas répéter 1280 et 857 partout, je ferais ça:
Bizarre ton truc : ca affiche juste un petit rectangle et une petite ligne un peu plus loin ...
En plus pour ne pas répéter 1280 et 857 partout, je ferais ça:
from tkinter import * from math import* import random def carre() : x1,y1=random.randint(0,WIDTH), random.randint(0,HEIGHT) x2 = (x1+(cos(atan((fuite[1]-y1)/(fuite[0]-x1))))*lvec) y2 = (y1+(sin(atan((fuite[1]-y1)/(fuite[0]-x1))))*lvec) canv.create_line(x1,y1,x2,y2) fuite=[300,100] WIDTH, HEIGHT = 1280, 657 lvec = 30 fen=Tk() fen.geometry(str(WIDTH)+"x"+str(HEIGHT)) canv=Canvas(fen) canv.place(x=0,y=0,height=HEIGHT,width=WIDTH) canv.create_rectangle(295,95,305,105) carre() fen.mainloop()
Joseph_Hocquet
Messages postés
17
Date d'inscription
lundi 5 juillet 2021
Statut
Membre
Dernière intervention
28 août 2022
Modifié le 31 juil. 2021 à 18:26
Modifié le 31 juil. 2021 à 18:26
Bonjour, oui Le programme c'était pour vérifier mes calculs donc le carré c'est juste un moyen de situer le point de fuite et la ligne part d'un coin de la face de mon cube que je n'ai pas affiché. Ces jours-ci j'ai peu avancé mais voila mon programme. j'ai juste des réglages à faire afin qu'en reliant les vecteurs on obtienne un carré et que la longueur de mon vecteur diminue si la distance entre le point de fuite et le coin du carré est inférieur à 30. Pour le programme il suffit de cliquer où on veut pour faire apparaitre un cube avec encore quelques soucis.
def souris(aaa) : carre(aaa.x,aaa.y) def carre(x,y) : canv.create_rectangle(x-20,y-20,x+20,y+20,fill="blue", outline="white") point=[] for a in (20,-20) : for z in (20,-20) : if fuite[0]<x+a : e=-1 else: e=1 point.append(x+a+(cos(atan((fuite[1]-y-z)/(fuite[0]-x-a)))*e)*30) point.append(y+z+(sin(atan((fuite[1]-y-z)/(fuite[0]-x-a)))*e)*30) if fuite[1]<y-20 : canv.create_polygon(x-20,y-20,x+20,y-20,point[2],point[3],point[6],point[7],outline="white") if fuite[1]>y+20 : canv.create_polygon(x-20,y+20,x+20,y+20,point[0],point[1],point[4],point[5],outline="white") if fuite[0]<x-20 : canv.create_polygon(x-20,y-20,x-20,y+20,point[4],point[5],point[6],point[7],outline="white") if fuite[0]>x+20 : canv.create_polygon(x+20,y-20,x+20,y+20,point[0],point[1],point[2],point[3],outline="white") from tkinter import * from math import* import random fen=Tk() fen.geometry("1280x657") canv=Canvas(fen) canv.place(x=0,y=0,height=657,width=1280) fuite=[600,250] canv.create_rectangle(fuite[0]-5,fuite[1]-5,fuite[0]+5,fuite[1]+5) fen.bind("<ButtonPress-1>",souris) fen.mainloop()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 31 juil. 2021 à 20:13
Modifié le 31 juil. 2021 à 20:13
ok, mais en principe, on met les imports, puis les fonctions, puis le programme principal,
et on aère un peu :
et on aère un peu :
from tkinter import * from math import* import random def souris(aaa) : carre(aaa.x,aaa.y) def carre(x,y) : canv.create_rectangle(x-20,y-20,x+20,y+20,fill="blue", outline="white") point=[] for a in (20,-20) : for z in (20,-20) : if fuite[0]<x+a : e=-1 else: e=1 point.append(x+a+(cos(atan((fuite[1]-y-z)/(fuite[0]-x-a)))*e)*30) point.append(y+z+(sin(atan((fuite[1]-y-z)/(fuite[0]-x-a)))*e)*30) if fuite[1]<y-20 : canv.create_polygon(x-20,y-20,x+20,y-20,point[2],point[3],point[6],point[7],outline="white") if fuite[1]>y+20 : canv.create_polygon(x-20,y+20,x+20,y+20,point[0],point[1],point[4],point[5],outline="white") if fuite[0]<x-20 : canv.create_polygon(x-20,y-20,x-20,y+20,point[4],point[5],point[6],point[7],outline="white") if fuite[0]>x+20 : canv.create_polygon(x+20,y-20,x+20,y+20,point[0],point[1],point[2],point[3],outline="white") WIDTH, HEIGHT = 1280, 657 fuite=[600,250] fen=Tk() fen.geometry(str(WIDTH)+"x"+str(HEIGHT)) fen.bind("<ButtonPress-1>",souris) canv=Canvas(fen) canv.place(x=0,y=0,height=HEIGHT,width=WIDTH) canv.create_rectangle(fuite[0]-5,fuite[1]-5,fuite[0]+5,fuite[1]+5) fen.mainloop()
Joseph_Hocquet
Messages postés
17
Date d'inscription
lundi 5 juillet 2021
Statut
Membre
Dernière intervention
28 août 2022
4 août 2021 à 13:31
4 août 2021 à 13:31
Merci ! C'est vrai que je ne présente jamais mes programme à d'autres personnes donc je ne savais pas comment faire la présentation. Pour l'instant, j'arrive à afficher correctement un cube seulement en bas à droite du point de fuite. J'essaye donc d'adapter mon programme pour le faire dans toute les configurations.
Merci encore pour ton aide.
Merci encore pour ton aide.