Bonjour,
je voudrais savoir comment, à partir des coordonnées d'un point sur une surface plane je pourrais calculer son emplacement sur une surface en perspective (et vice-versa).
Je vous ai joint deux images : la première est mon point sur la surface normale, la deuxième est la même mais avec une transformation pour la rendre perspective. Dans cette exemple, le point est centré, donc je pourrais trouver ses coordonnées avec les diagonales, mais ce n'est pas toujours le cas.
J'ai trouvé pour avoir x (faire le rapport entre la largeur où se trouve le point sur la largeur maximale), mais je n'ai aucune idée pour avoir y.
Merci d'avance
J'essayerais bien ceci :
Y = E * arctan (y H)
avec H un paramètre 0
pour lequel + H est grand, + la perspective est accentuée
avec E = Coefficient d'Echelle suivant la dimension de la surface à représenter.
...
Désolé pour la réponse tardive ; alors voilà ce que j'ai fais :
(111*132)/(150*200)*Arctan(100*1.5)43.77
Ça me semblait à peu près correct, mais si je remplace 100 par 50, j'obtiens 43.58...
J'ai pris 1.5 pour H au hasard, mais le changer me donne toujours un résultat vers 43.
Est-ce qu'il y aurait une autre méthode ? Merci.
Ce serait mieux si tu travaillais en radians pour le arctan (et non en degrés), mais cela ne change rien à un coeff multiplicateur près.
Il faut prendre H petit pour diminuer l'impression de perspective.
en radians... Y = E * arctan (y H)
mettons que ta surface à représenter fasse 200 en y :
H = 1/200 et E = 250
y = 200 --> Y = 196..
le point centrale de la surface à représenter :
H = 1/200 et E = 250
y = 100 --> Y = 116..
...
Merci mais j'ai tout de même du mal à comprendre : comment est-ce que je peux trouver H et E ? Je possède les coordonnées des 4 points de ma table en perspective (désolé d'avoir omis ce point), cela pourrait aider...
Cependant c'est pour coder sur DS, et la bibliothèque PAlib utilise des angles [url=http://www.palib.info/wikifr/doku.php?id=day6#les_angles_dans_palib]qui vont de 0 à 511[/url], donc utiliser arctan pour calculer mon point me parait impossible
ok. alors je vois ceci :
on simplifie la formule : Y = R * arctan (y/R)
et on en prend une approximation :
Y = R (y/R - y3/3R3) = y(1 - y²/3R²)
puisque tu as les coordonnées des coins de la table dans les 2 systèmes,
tu prends pour R = (dy3 / 3 (dy - dY))
...
Merci encore, mais je n'arrive pas à trouver le bon résultat. J'ai calculé avec , y=100, dy=200, dY=132 (pour rester avec mon exemple du haut) et j'obtiens 91.5 (et en essayant avec , j'obtiens 100). Est-ce que j'ai mal interprété tes formules ?
Et si tu me donnais les coordonnées des 4 coins de ta table, dans les deux système, en restant dans ton exemple du haut ?
...
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :