我有這個浮球,它是一個旋轉角度。包裝數字?
Camera.roty += (float) diffx * 0.2;
其中diff是鼠標位置的變化。
在OpenGL中,如果它超過360或低於0,它將包裝它,但如果我想驗證角度是否在0到180之間,我怎麼能這樣做呢?
感謝
我有這個浮球,它是一個旋轉角度。包裝數字?
Camera.roty += (float) diffx * 0.2;
其中diff是鼠標位置的變化。
在OpenGL中,如果它超過360或低於0,它將包裝它,但如果我想驗證角度是否在0到180之間,我怎麼能這樣做呢?
感謝
爲了應對浮點值,你可以這樣做:
angle = angle - floor(angle/360) * 360;
這應該處理負值正確太(-1將被轉換爲359)。
你的工作 – jmasterx 2010-09-11 01:09:26
根據由@bta評論:
爲什麼不使用:
angle % 180
而且這個數字保存爲一個角?
Mod不工作時,它的neightive – jmasterx 2010-09-11 01:01:13
你可以保存有關符號,abs()它,然後mod,在最後乘以符號的信息。 – 2010-09-11 01:02:36
如果我理解你的問題正確你基本上是在尋找這樣的事情?:
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,它不工作 – jmasterx 2010-09-11 01:06:01
你能解釋一下你所說的「捆綁」的意思是一點點? – 2010-09-11 00:50:23
@ Thomasz-我認爲他意味着365的角度會自動轉換爲5(或-90會轉換爲270)。實質上,'角度%360'。 – bta 2010-09-11 00:51:35
你想驗證哪個角度? 'diffx'?添加之前有'Camera.roty'嗎?添加後? – bta 2010-09-11 00:53:16