2010-01-14 4 views
1

J'essaie de piéger les degrés X (fig: 45) d'un degré donné (fig: 15). Je me fais prendre dans le wrap 360/0. Les degrés donnés sont tous normalisés 0-360. Quelqu'un peut-il me montrer comment faire? J'ai inclus un graphique qui illustre mon manque d'aptitude. Je jure sur la tombe de Michael Jackson que j'ai écumé Google et StackOverflow pour une réponse avant de demander. Je me rends compte que c'est probablement une répétition, mais les réponses ne doivent pas être étiquetés ou nommés de façon appropriée.Degrés de mesure (0-360) woo

Merci à l'avance,

Casey


alt text http://i48.tinypic.com/14snjup.gif

+1

C'est cool, mais au moins 3 autres partagent l'avis contraire et ont répondu à ma question dans l'heure. Merci pour votre commentaire utile. – Casey

Répondre

2

15 + 45 = 60, de sorte que vous avez ce côté droit, mais 15-45 = -30, donc vous devez ajouter 360, donnant 330.

Fondamentalement, vous ajoutez ou soustrayez 360 chaque fois que vous sortez [0,360], où j'utilise a) pour une gamme ouverte. Si vous voulez écrire le test pour colorer vos marqueurs en bleu, disons h est le titre, o est le décalage, et x est le marqueur que nous testons, vous cherchez quelque chose comme, en c-ish pseudocode:

t=h-x 
if (t>360) {t-=360} 
if (t<0) {t+=360} 
if (t<o) {mark blue} 
+1

Vous devriez pouvoir utiliser 't% 360' à la place. Je ne suis pas sûr si le résultat dépend de l'implémentation pour les valeurs négatives, mais sur mon ordinateur cela fonctionne. –

+0

Merci, très apprécié. – Casey

1

Je ne suis pas 100% sûr de ce que vous voulez atteindre. Je suppose que ce que vous voulez est: "Pour le degré X, trouver tous les degrés qui sont au plus à Y degrés de lui donner un degré de Z degrés entre chaque marque."

Cela étant le cas il suffit d'écrire une boucle de XY à X + incréments de prise Y de Z. Si la valeur de mesure actuelle est < 0 puis juste ajouter 360.

+0

J'aurais dû préciser que je cherchais du code pseudo au minimum, merci quand même – Casey

1

Pourquoi ne pas simplement utiliser l'opération modulo?

deg = deg % 360

+0

Je ne suis pas complètement sûr comment utiliser ceci ... quand je l'ai essayé n'a pas donné le même résultat que le pseudocode d'Andrew – Casey

+1

Vous l'utilisez comme ceci ... si deg est 370, alors il devient 10 après l'opération modulo et assignation. Si deg est 1000, il devient 280. Il prend toujours le reste après la division. Le pseudocode d'Andrew échoue dans le second cas. –