|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() |
Bonjour,
Je suis en train de réalisé un moteur de raycasting (pour la projection d'une "fausse 3D" dans le but de réalisé un moteur de type Doom). Jusqu'ici, mon moteur fonctionne, mais il me faut réduire l'effet de distorsion optique (FOV), mais pour cela, il me faut calculer l'angle de deux droites. Je joins ici une image schéma: schéma , mon triangle n'est pas rectangle par contre, mais je voudrais connaître en AS3 le calcul qui permettrais d'obtenir l'angle des deux droites: A-B et A-C. Merci d'avance, cela m'aiderait pas mal.
__________________
« N'est pas mort ce qui à jamais dort, et au long des ères peut mourir même la mort. » H.P Lovecraft « À l'heure actuelle, tout être vivant est potentiellement un membre actif de 4chan...sans même le savoir lui-même. » Anonymous Le site où se développe le jeu Blackmud et où le bon goût côtoie l'information inutile : |
|
|
00
|
|
|
#2 | ||
|
Candidat au titre de Membre du Club
![]() Gabriel Freitas Inscription : décembre 2010 Messages : 30 ![]() |
Hello. Partons du principe que dans ton triangle (pas rectangle
Tu peux procéder comme suit (mathématiquement parlant. Je ne connais pas AS3). Il faut utiliser une formule qui dit que le cosinus de l'angle que tu cherches équivaut au produit scalaire de deux vecteurs directeurs définissant tes droites, ceci divisé par la multiplication des normes (longueurs) de ces deux vecteurs directeurs. Par contre, si tu connais d'autres informations dans ton triangle. Tu devrais avoir plus de facilité à utiliser le théorème du sinus ou du cosinus (c'est selon) Sans quoi, voici un détaillé de ce que je t'expliquais avec les vecteurs. Code :
J'espère néanmoins que ceci t'aidera déja. Si tu ne comprends pas quelques chose, dis le moi. Ca peut paraître un incompréhensif comme ça. Ca doit l'être encore si tu n'es pas trop un matheux. Mais je t'explique volontiers Bonne soirée |
||
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() |
Je viens d'arrivé, je suis ravis de voir une réponse aussi documenté que celle-ci.
En fait, pour mon triangle, je connais la longueur de toutes les droites (donc j'ai un max d'info). Je vais plancher sur ce que tu viens de me donner. Merci beaucoup
__________________
« N'est pas mort ce qui à jamais dort, et au long des ères peut mourir même la mort. » H.P Lovecraft « À l'heure actuelle, tout être vivant est potentiellement un membre actif de 4chan...sans même le savoir lui-même. » Anonymous Le site où se développe le jeu Blackmud et où le bon goût côtoie l'information inutile : |
|
|
00
|
|
|
#4 | ||
|
Candidat au titre de Membre du Club
![]() Gabriel Freitas Inscription : décembre 2010 Messages : 30 ![]() |
Si tu connais la longueur de toutes les droites, je te recommande d'utiliser le Théorème du cosinus. Beaucoup plus simple à mettre en place.
Je t'ai donné la réponse précédente en partant du principe que tu avais un minimum d'informations. Le théorème du cosinus se présente comme suit. Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() |
Le seul truc, c'est que pour faire ce calcul par exemple:
Code :
alpha = arccos( ((a^2)-(b^2)-(c^2)) / (-2*b*c) ) a^2 = (b^2) + (c^2) - (2*b*c * cos(alpha)) b^2 = (a^2) + (c^2) - (2*a*c * cos(beta)) c^2 = (a^2) + (b^2) - (2*a*b * cos(gamma)) Comment faire sans?
__________________
« N'est pas mort ce qui à jamais dort, et au long des ères peut mourir même la mort. » H.P Lovecraft « À l'heure actuelle, tout être vivant est potentiellement un membre actif de 4chan...sans même le savoir lui-même. » Anonymous Le site où se développe le jeu Blackmud et où le bon goût côtoie l'information inutile : |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Gabriel Freitas Inscription : décembre 2010 Messages : 30 ![]() |
Le symbole ^ représente une puissance. a^2 signifie donc a élevé au carré. mais je pense que tu le savais déjà. (Mais Je ne comprends pas ce que tu ne comprends pas alors je le dis au cas ou).
Je croyais que tu connaissais la longueur de toutes les droites. Si tu considères que a b et c sont les cotés de ton triangle, tu devrais connaitre leur longueur non ? Voici un petit dessin (vite fait sous paint). tu as donc tes côtés et tes angles sur ce dessin. a, b et c, sont les cotés du triangle. Les cotés débordent, c'est fait exprès (pour illustrer que c'es un croisement de droites). Explique moi ce qui ne vas pas |
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() |
En fait, apparemment, j'ai réussi à faire le calcul, ça fonctionne, mais maintenant je galère un peu sur la suite
Je vais expliqué le problème qui m'a fait poser cette question de trigonométrie, en espérant que tu seras y répondre. J'ai joint un schéma à ce post, en fait, j'effectue un raycasting (lancé circulaire de rayons partir d'un point central). En rouge ce sont mes rayons. Mais je voudrais savoir comment (par quel calcul) je pourrais allonger mes rayons (jusqu'au rayons bleus) de manière à ce qu'il s'arrêtent tous à la même limite donc? J'avais lu qu'il fallait calculer le cosinus de l'angle qui sépare le rayon central du rayon à corriger, et qu'il fallait multiplier le rayon à corriger par ce cosinus... Mais ça n'a pas l'air de marcher. Merci encore pour ton aide déjà, et j'espère que tu pourra encore m'aider.
__________________
« N'est pas mort ce qui à jamais dort, et au long des ères peut mourir même la mort. » H.P Lovecraft « À l'heure actuelle, tout être vivant est potentiellement un membre actif de 4chan...sans même le savoir lui-même. » Anonymous Le site où se développe le jeu Blackmud et où le bon goût côtoie l'information inutile : |
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Gabriel Freitas Inscription : décembre 2010 Messages : 30 ![]() |
Aaaaaaaaaah... Je vois beaucoup mieux le problème.
Donc, si j'ai bien compris,tu as pu calculer l'angle que tu voulais. Mais en effet, multiplier la longueur de ta droite par le cosinus d'un angle ne vas pas t'aider. Le cosinus d'un angle étant toujours égal ou inférieur à 1, ta droite ne pourra que rétrécir Ce que tu dois faire, c'est diviser la longueur de ta droite par le cosinus de l'angle. Pour preuve, si ton angle vaut 90°, la valeur du cosinus sera de 0. Or, la division par zéro est impossible. Ce qui est normal comme résultat puisqu'avec un angle de 90°, la projection de ta droite n'atteindra jamais la ligne d'horizon. J'espère que cela t'auras aidé, redis moi
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com