2010-07-08 4 views
2

J'ai besoin d'obtenir le supplément d'un angle."Mirroring" un angle

Exactement ce que je dois faire est d'implémenter un type de code qui reflète l'angle, disons, j'ai 45 degrés -> 135, un autre exemple: 80 -> 100, 0 degrés -> 180, et ainsi de suite .

Résolu: Je mis en œuvre ce il y a un instant, et cela a fonctionné parfaitement, j'utilise 180 - angle si l'angle < 180 et 360 - angle si l'angle> = 180.

+1

Vous voulez dire 80 -> 100? – quantumSoup

+0

Oui :) 6 plus à y aller. – Artemix

Répondre

5

Je pense que vous êtes après 180 - yourAngle .

Vos exemples:

  • 45 degrés: 180 - 45 = 135
  • 80 degrés: 180 - 80 = 100
  • 0 degrés: 180 - 0 = 180
+0

Oui, cela a fonctionné bien mais, et si mon angle est 225 ?, si je fais cela alors j'obtiendrai 180 - 225 = -45, et je devrais obtenir 135. Peut-être que je devrais employer 360 - angle si mon angle est> 180. – Artemix

+0

@Artemix: Normaliser l'angle entre 0 et 180 (en ajoutant/soustrayant 180 jusqu'à ce que vous soyez entre [0, 180)) –

+0

Oui, je sais cela, mais je demande si je suis correct si Je fais 360 - myAngle quand myAngle> 180. – Artemix

1
reflected_angle = 180 - ray_angle 
2

La réponse la plus simple, basée sur ce que vous semblez poser des questions sur est

angle2 = 180 - angle1 
1

Si vous affichez votre « angle » comme vecteur 2D dans le plan, vous changez simplement le signe de la composante normale au plan "miroir". Ainsi, par exemple, un angle de 45 degrés (1, 1) «reflété» dans le plan yz devient (-1, 1).

+0

Oui, c'était EXACTEMENT ce que je pensais en premier lieu, mais quand j'ai essayé de le faire sur le code, j'ai trouvé quelques problèmes. Chose est, je n'ai pas trouvé un moyen de "reconstruire" l'angle en utilisant les nouveaux composants. – Artemix

+0

Postez votre code, parce que c'est exactement correct. Le problème était dans votre code. – duffymo

+0

Si vous avez accepté la réponse, pourquoi ne pas voter aussi? – duffymo