OPENGL中1、先旋转后平移 2、先平移后旋转 有什么区别啊???
我需要进行图形的旋转、平移操作;但是 1 与 2 的执行结果不一样,怎样解决啊???
代码如下:
1、 先旋转后平移
''旋转
For Loopi = 1 To ViewTrans.ItemNum
Select Case ViewTrans.ItemsMode(Loopi)
Case TransRotate
glRotatef Val(ViewTrans.ItemsPara(Loopi, 1)), ViewTrans.ItemsPara(Loopi, 2), ViewTrans.ItemsPara(Loopi, 3), ViewTrans.ItemsPara(Loopi, 4)
Case Else
End Select
Next
''平移
For Loopi = 1 To ViewTrans.ItemNum
Select Case ViewTrans.ItemsMode(Loopi)
Case TransPad
wPadDis.X = wPadDis.X + ViewTrans.ItemsPara(Loopi, 1)
wPadDis.Y = wPadDis.Y + ViewTrans.ItemsPara(Loopi, 2)
wPadDis.Z = wPadDis.Z + ViewTrans.ItemsPara(Loopi, 3)
Case Else
End Select
Next
glTranslatef wPadDis.X, wPadDis.Y, wPadDis.Z
''绘制
DrawRectCoord
2、 先平移后旋转
''平移
For Loopi = 1 To ViewTrans.ItemNum
Select Case ViewTrans.ItemsMode(Loopi)
Case TransPad
wPadDis.X = wPadDis.X + ViewTrans.ItemsPara(Loopi, 1)
wPadDis.Y = wPadDis.Y + ViewTrans.ItemsPara(Loopi, 2)
wPadDis.Z = wPadDis.Z + ViewTrans.ItemsPara(Loopi, 3)
Case Else
End Select
Next
glTranslatef wPadDis.X, wPadDis.Y, wPadDis.Z
''旋转
For Loopi = 1 To ViewTrans.ItemNum
Select Case ViewTrans.ItemsMode(Loopi)
Case TransRotate
glRotatef Val(ViewTrans.ItemsPara(Loopi, 1)), ViewTrans.ItemsPara(Loopi, 2), ViewTrans.ItemsPara(Loopi, 3), ViewTrans.ItemsPara(Loopi, 4)
Case Else
End Select
Next
''绘制
DrawRectCoord