Source code for gtsimulation.Global.functions

import numpy as np
from numba import jit


# @jit(fastmath=True, nopython=True)
[docs] def vecRotMat(f, t): # assert np.linalg.norm(f) == 1 and np.linalg.norm(t) == 1 # # f = np.array(f) # t = np.array(t) if np.all(f == t): return np.diag([1, 1, 1]) elif np.all(f == -t): return np.diag([-1, -1, -1]) v = np.cross(f, t) s = np.linalg.norm(v) c = np.dot(f, t) v_mat = np.array([[0, -v[2], v[1]], [v[2], 0, -v[0]], [-v[1], v[0], 0]]) return np.diag([1, 1, 1]) + v_mat + v_mat @ v_mat * (1 - c) / s ** 2