use np.cross

This commit is contained in:
Lindsey Heagy
2015-11-05 16:10:43 -08:00
parent 025b2db70e
commit 96b855d71d
2 changed files with 1 additions and 27 deletions
+1 -22
View File
@@ -1,26 +1,5 @@
import numpy as np
def crossProd(v0,v1):
"""
Cross product of 2 vectors
:param numpy.array v0: vector of length 3
:param numpy.array v1: vector of length 3
:rtype: numpy.array
:return: cross product of v0,v1
"""
# ensure both n0, n1 are vectors of length 1
assert len(v0) == 3, "Length of v0 should be 3"
assert len(v1) == 3, "Length of v1 should be 3"
v2 = np.zeros(3,dtype=float)
v2[0] = v0[1]*v1[2] - v1[1]*v0[2]
v2[1] = v1[0]*v0[2] - v0[0]*v1[2]
v2[2] = v0[0]*v1[1] - v1[0]*v0[1]
return v2
def rotationMatrixFromNormals(v0,v1,tol=1e-20):
"""
Performs the minimum number of rotations to define a rotation from the direction indicated by the vector n0 to the direction indicated by n1.
@@ -46,7 +25,7 @@ def rotationMatrixFromNormals(v0,v1,tol=1e-20):
n0dotn1 = n0.dot(n1)
# define the rotation axis, which is the cross product of the two vectors
rotAx = crossProd(n0,n1)
rotAx = np.cross(n0,n1)
if np.linalg.norm(rotAx) < tol:
return np.eye(3,dtype=float)