I'm trying to work with quaternion math in Blender 2.82a and Python I need to normalize a quaternion number in Blender 2.82a using Python before I do calculations on it but I'm getting an error.
TypeError: unsupported operand type(s) for /: 'Quaternion' and 'float' for the line
quat1_norm = quat1 / math.sqrt(ww**2 + ii**2 + jj**2 + kk**2)
The code below is:
import math
import mathutils
import numpy as np
new_angle_rad = np.deg2rad(10)
ww = np.cos(new_angle_rad/2)
ii = np.sin(new_angle_rad/2)*0
jj = np.sin(new_angle_rad/2)*1
kk = np.sin(new_angle_rad/2)*0
quat1 = mathutils.Quaternion((ww, ii, jj, kk))
#Normalize quaternion to length 1 (unit quaternion).
quat1_norm = quat1 / math.sqrt(ww**2 + ii**2 + jj**2 + kk**2)
print(ww,ii,jj,kk)
print(quat1)
I'm trying to convert Octave code to work in Python and Blender https://octave.sourceforge.io/quaternion/function/@quaternion/unit.html
Here's the Octave math code I'm trying to convert.
Function File: qn = unit (q)
Normalize quaternion to length 1 (unit quaternion).
q = w + x*i + y*j + z*k
unit (q) = q ./ sqrt (w.^2 + x.^2 + y.^2 + z.^2)
Package: quaternion
I did try:
quat1_norm=mathutils.Quaternion.normalize(mathutils.Quaternion((1, 2, 3, 4)))
print(quat1_norm)
it comes back with None.
When a similar command is done in Octave I get this
unit(quaternion(1,2,3,4))
ans = 0.1826 + 0.3651i + 0.5477j + 0.7303k