def test_rotate(self): a = math.sqrt(2.0)/2.0 #Trivial p = Quat(1,0,0,0) #Identity quaternion v = V3D(1,0,0) orig_v = v; p.rotate(v); self.assertEquals(orig_v,v) # Now do more angles v = V3D(1,0,0); p = Quat(90., V3D(0,1,0)); #90 degrees, right-handed, around y p.rotate(v); self.assertEquals(v, V3D(0,0,-1)) v = V3D(1,0,0); p = Quat(45., V3D(0,0,1)) p.rotate(v); self.assertEquals(v, V3D(a, a, 0))
def test_rotate(self): a = math.sqrt(2.0)/2.0 #Trivial p = Quat(1,0,0,0) #Identity quaternion v = V3D(1,0,0) orig_v = v; p.rotate(v); self.assertEquals(orig_v,v) # Now do more angles v = V3D(1,0,0); p = Quat(90., V3D(0,1,0)); #90 degrees, right-handed, around y p.rotate(v); self.assertEquals(v, V3D(0,0,-1)) v = V3D(1,0,0); p = Quat(45., V3D(0,0,1)) p.rotate(v); self.assertEquals(v, V3D(a, a, 0))
def MyRotateFunction(vector, axis, angle): from copy import copy q = Quat(angle, axis) new_vector = copy(vector) q.rotate(new_vector) return new_vector