Damn, forgot about that
acos. Then to get no rotation I need to use w=-1: 2*acos(-1) = 360 degrees. Thanks again farshizzo!
EDIT: The following code makes MainView look down X.
Code:
import viz
viz.go(viz.FULLSCREEN)
ROTATION_INC = 2
TRANSLATE_INC = 0.1
i = 0
while (i < 10):
redBall = viz.add("white_ball.wrl")
redBall.setPosition([i, 0, 0])
redBall.color([1 - 0.1*i, 0, 0])
greenBall = viz.add("white_ball.wrl")
greenBall.setPosition([0, i, 0])
greenBall.color([0, 1 - 0.1*i, 0])
blueBall = viz.add("white_ball.wrl")
blueBall.setPosition([0, 0, i])
blueBall.color([0, 0, 1 - 0.1*i])
i += 0.1
viz.MainView.setQuat([0,1,0,-1])
viz.MainView.setPosition(5, 0, 0.5)
vizact.whilekeydown(viz.KEY_UP, viz.move, 0, 0, TRANSLATE_INC)
vizact.whilekeydown(viz.KEY_DOWN, viz.move, 0, 0, -TRANSLATE_INC)
vizact.whilekeydown(viz.KEY_LEFT, viz.rotate, viz.BODY_ORI, -ROTATION_INC, 0, 0)
vizact.whilekeydown(viz.KEY_RIGHT, viz.rotate, viz.BODY_ORI, ROTATION_INC, 0, 0)
vizact.whilekeydown(viz.KEY_PAGE_UP, viz.rotate, viz.HEAD_ORI, 0, -ROTATION_INC, 0)
vizact.whilekeydown(viz.KEY_PAGE_DOWN, viz.rotate, viz.HEAD_ORI, 0, ROTATION_INC, 0)
and also produces much prettier axes.
Hold on though, why [0,1,0]? We're speciifying no rotation around Y, not X as it seems?