def fromaxisangle(axisangle): axis, angle = axisangle ang_2 = angle / 2.0 s_ang = math.sin(ang_2) c_ang = math.cos(ang_2) q = vec3.mulN(axis, s_ang) + (c_ang,) return normalize(q)
def fromnormals_faster(n1, n2): axis = vec3.normalize(vec3.cross(n1, n2)) half_n = vec3.normalize(vec3.add(n1, n2)) cos_half_angle = vec3.dot(n1, half_n) sin_half_angle = 1.0 - cos_half_angle ** 2 return vec3.mulN(axis, sin_half_angle) + (cos_half_angle,)
def fromaxisangle(axisangle): axis,angle= axisangle ang_2= angle/2.0 s_ang= math.sin(ang_2) c_ang= math.cos(ang_2) q= vec3.mulN(axis, s_ang) + (c_ang,) return normalize(q)
def fromnormals_faster(n1,n2): axis= vec3.normalize(vec3.cross(n1, n2)) half_n= vec3.normalize(vec3.add(n1, n2)) cos_half_angle= vec3.dot(n1, half_n) sin_half_angle= 1.0 - cos_half_angle**2 return vec3.mulN(axis, sin_half_angle) + (cos_half_angle,)
def mulN(m, N): return tuple([vec3.mulN(v, N) for v in m])
def mulN(m,N): return tuple([vec3.mulN(v,N) for v in m])