def _build_transform( self, x: float, y: float, z: float, a: float, b: float, c: float ) -> gp_Trsf: rv = gp_Trsf() m = a ** 2 + b ** 2 + c ** 2 rv.SetRotation( gp_Quaternion( 2 * a / (m + 1), 2 * b / (m + 1), 2 * c / (m + 1), (1 - m) / (m + 1), ) ) rv.SetTranslationPart(gp_Vec(x, y, z)) return rv
def tq_to_loc(t, q): T = gp_Trsf() Q = gp_Quaternion(*q) V = gp_Vec(*t) T.SetTransformation(Q, V) return TopLoc_Location(T)