WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Varying rotation speed with spinTo (https://forum.worldviz.com/showthread.php?t=4523)

 mape2k 03-19-2013 11:00 AM

Varying rotation speed with spinTo

Hello,

I am using the spinTo command in a for loop to spin to different view angles during an experiment. I want the rotation speed to be constant, independent from the actual and desired view angle.
However, the spinTo command gives me different rotation speeds when I use it. Sometimes its faster, and sometimes its slower, even though I specify a constant speed angle.

I have attached a working minimum example. Here, the speed will vary, seemingly at random.

Code:

```import viztask import viz import vizact angles = [-120,150,100,150,-170,50,90,150] viz.addChild('piazza.osgb') view=viz.MainView def run():                 for k in angles:                 print str(k)                 yield viztask.waitKeyDown(' ')                 yield viztask.addAction(view, vizact.spinTo(euler=[k,0,0],speed=80,interpolate = vizact.linear)) viztask.schedule(run()) viz.go()```

 farshizzo 03-20-2013 08:23 AM

This appears to be a bug with how the rotational differences are computed. It doesn't seem to be using the shortest distance in all cases. This will be fixed in the next release. In the meantime you can add the following code to the beginning of your script to get the correct behavior:
Code:

```import math import vizmat def QuatDiff(q1,q2):         w = abs((vizmat.Quat(q1) * vizmat.Quat(q2).inverse()).w)         return viz.degrees(math.acos(w) * 2.0) vizmat.QuatDiff = QuatDiff```

 mape2k 03-22-2013 07:48 AM