2010-09-11 61 views
0

我有這個浮球,它是一個旋轉角度。包裝數字?

Camera.roty += (float) diffx * 0.2; 

其中diff是鼠標位置的變化。

在OpenGL中,如果它超過360或低於0,它將包裝它,但如果我想驗證角度是否在0到180之間,我怎麼能這樣做呢?

感謝

+0

你能解釋一下你所說的「捆綁」的意思是一點點? – 2010-09-11 00:50:23

+0

@ Thomasz-我認爲他意味着365的角度會自動轉換爲5(或-90會轉換爲270)。實質上,'角度%360'。 – bta 2010-09-11 00:51:35

+0

你想驗證哪個角度? 'diffx'?添加之前有'Camera.roty'嗎?添加後? – bta 2010-09-11 00:53:16

回答

1

爲了應對浮點值,你可以這樣做:

angle = angle - floor(angle/360) * 360; 

這應該處理負值正確太(-1將被轉換爲359)。

+0

你的工作 – jmasterx 2010-09-11 01:09:26

0

根據由@bta評論:

爲什麼不使用:

angle % 180 

而且這個數字保存爲一個角?

+0

Mod不工作時,它的neightive – jmasterx 2010-09-11 01:01:13

+0

你可以保存有關符號,abs()它,然後mod,在最後乘以符號的信息。 – 2010-09-11 01:02:36

2

如果我理解你的問題正確你基本上是在尋找這樣的事情?:

float Wrap(const float Number, const float Max, const float Min) { 
if(Number > 0.0f) { 
    return fmod(Number, Max) + Min; 
} 
else { 
    return Max - fmod(abs(Number), Max) + Min; 
} 
} 
+0

只工作順時針,如果數字<0,它不工作 – jmasterx 2010-09-11 01:06:01