2008/05/02

glScale


OpenGLの提供する3番目の標準変換は拡大縮小(スケーリング)です。この例では前の例のglRotateをglScaleに置き換えただけです。ただし、回転と違って拡大縮小は連続して同じ操作を行うと画面からはみ出してしまうか、または点になってしまいます。そこで、拡大を10回行ったら縮小を10回行うように制御してみました。Pythonのif文による制御はC言語に似ているので簡単です。{}を:とインデントに置き換えて、;を取り除けばOKです。グローバル変数は自由に参照できますが、グローバル変数の値を変更するにはglobal宣言が必要です。

I just replaced glRotatef to glScale to illustrate scaling translation of OpenGL. Not like glRotate, I cannot continue scale down becuase the triangle will be too small. I should control sclae up and down using control statement in Python. Python provedes "if" statement very similar to C.


sc = up = 0
def timer(value):
global sc, up
if up:
glScale(1.1 , 1.1 , 1)
sc += 1
if sc > 0:
up = 0
else:
glScale(0.9091 , 0.9091 , 1)
sc -= 1
if sc < -8:
up = 1
glutPostRedisplay()
glutTimerFunc(50 , timer , 0)

0 件のコメント: