Files
simpeg/tests/utils/test_coordutils.py
T
2015-11-04 21:37:27 -08:00

36 lines
1.3 KiB
Python

import unittest, os
import numpy as np
from SimPEG import Utils
tol = 1e-15
class coorUtilsTest(unittest.TestCase):
def test_crossProd(self):
self.assertTrue(np.linalg.norm(Utils.coordutils.crossProd(np.r_[1.,0.,0.],np.r_[0.,1.,0.]) - np.r_[0.,0.,1.]) < tol)
self.assertTrue(np.linalg.norm(Utils.coordutils.crossProd(np.r_[0.,1.,0.],np.r_[0.,0.,1.]) - np.r_[1.,0.,0.]) < tol)
self.assertTrue(np.linalg.norm(Utils.coordutils.crossProd(np.r_[0.,0.,1.],np.r_[1.,0.,0.]) - np.r_[0.,1.,0.]) < tol)
def test_rotationMatrixFromNormals(self):
v0 = np.random.rand(3)
v0 *= 1./np.linalg.norm(v0)
v1 = np.random.rand(3)
v1 *= 1./np.linalg.norm(v1)
Rf = Utils.coordutils.rotationMatrixFromNormals(v0,v1)
Ri = Utils.coordutils.rotationMatrixFromNormals(v1,v0)
self.assertTrue(np.linalg.norm(Utils.mkvc(Rf.dot(v0) - v1)) < tol)
self.assertTrue(np.linalg.norm(Utils.mkvc(Ri.dot(v1) - v0)) < tol)
def test_rotatePointsFromNormals(self):
v0 = np.random.rand(3)
v0*= 1./np.linalg.norm(v0)
v1 = np.random.rand(3)
v1*= 1./np.linalg.norm(v1)
self.assertTrue(np.linalg.norm(Utils.mkvc(Utils.coordutils.rotatePointsFromNormals(Utils.mkvc(v0,2).T,v0,v1))-v1) < tol)
if __name__ == '__main__':
unittest.main()