2012-11-05 52 views
0

比方說,我有這個glutIdleFunc在包含有多個,徑向佈置腿「脈動」一個小傢伙的OpenGL場景的背景去:在指定範圍內的glutIdleFunc旋轉

void PulsateLegs(void) 
{ 
    lowerLegsRot = (lowerLegsRot + 1)%360; 
    glutPostRedisplay(); 
} 

...其中該lowerLegsRot值用於這樣的顯示功能:

glRotatef((GLfloat)lowerLegsRot, 1.0, 0.0, 0.0); 

很難不看到的小傢伙實際上看起來像想象,但很明顯,這個功能是使腿旋轉一路走去反覆。我想把這個旋轉限制在一定的範圍內(比如說-15到50度),而且還要讓腿在該範圍內來回擺動,就像擺錘一樣。

由於我要拍攝65度的草圖,因此我試着將「%360」改爲「%65」作爲第一步。但是這樣做會讓腿變得太快,如果我想使用僅對整數有效的模數,我不能使用較小的增量值。

是否有另一種方法來實現所需的第一步行爲?更重要的是,我怎樣才能讓腿來回走動?這是一種很難用,這是獲得多次調用函數概念化(相對於只使用一個循環的結構,照顧一切,我意識到這一點之前,我試過的!)

回答

1

,我不能使用較低如果我想使用僅對整數有效的模數,則增加值。

%運營商無論如何都打破了。你不應該使用整數,而是漂浮,並使用fmod(double)或fmodf(float)函數。