Cleanup: API docs
[blender.git] / doc / python_api / examples / mathutils.Quaternion.py
1 import mathutils
2 import math
3
4 # a new rotation 90 degrees about the Y axis
5 quat_a = mathutils.Quaternion((0.7071068, 0.0, 0.7071068, 0.0))
6
7 # passing values to Quaternion's directly can be confusing so axis, angle
8 # is supported for initializing too
9 quat_b = mathutils.Quaternion((0.0, 1.0, 0.0), math.radians(90.0))
10
11 print("Check quaternions match", quat_a == quat_b)
12
13 # like matrices, quaternions can be multiplied to accumulate rotational values
14 quat_a = mathutils.Quaternion((0.0, 1.0, 0.0), math.radians(90.0))
15 quat_b = mathutils.Quaternion((0.0, 0.0, 1.0), math.radians(45.0))
16 quat_out = quat_a * quat_b
17
18 # print the quat, euler degrees for mear mortals and (axis, angle)
19 print("Final Rotation:")
20 print(quat_out)
21 print("%.2f, %.2f, %.2f" % tuple(math.degrees(a) for a in quat_out.to_euler()))
22 print("(%.2f, %.2f, %.2f), %.2f" % (quat_out.axis[:] +
23                                     (math.degrees(quat_out.angle), )))
24
25 # multiple rotations can be interpolated using the exponential map
26 quat_c = mathutils.Quaternion((1.0, 0.0, 0.0), math.radians(15.0))
27 exp_avg = (quat_a.to_exponential_map() +
28            quat_b.to_exponential_map() +
29            quat_c.to_exponential_map()) / 3.0
30 quat_avg = mathutils.Quaternion(exp_avg)
31 print("Average rotation:")
32 print(quat_avg)