Make sure rotate_vector works on 2d vectors

This commit is contained in:
Grant Sanderson 2019-01-04 12:48:05 -08:00
parent 56f331e8c4
commit 662598fcef

View file

@ -53,13 +53,21 @@ def quaternion_conjugate(quaternion):
def rotate_vector(vector, angle, axis=OUT): def rotate_vector(vector, angle, axis=OUT):
quat = quaternion_from_angle_axis(angle, axis) if len(vector) == 2:
quat_inv = quaternion_conjugate(quat) # Use complex numbers...because why not
product = reduce( z = complex(*vector) * np.exp(complex(0, angle))
quaternion_mult, return np.array([z.real, z.imag])
[quat, np.append(0, vector), quat_inv] elif len(vector) == 3:
) # Use quaternions...because why not
return product[1:] quat = quaternion_from_angle_axis(angle, axis)
quat_inv = quaternion_conjugate(quat)
product = reduce(
quaternion_mult,
[quat, np.append(0, vector), quat_inv]
)
return product[1:]
else:
raise Exception("vector must be of dimension 2 or 3")
def thick_diagonal(dim, thickness=2): def thick_diagonal(dim, thickness=2):