diff --git a/src/mol-math/linear-algebra/3d/vec3.ts b/src/mol-math/linear-algebra/3d/vec3.ts index 0be0f033dcbff1020f4ea5f9ac22566f45daf100..c0437fd5770afa42a9e867d8369494f819c8444f 100644 --- a/src/mol-math/linear-algebra/3d/vec3.ts +++ b/src/mol-math/linear-algebra/3d/vec3.ts @@ -452,9 +452,15 @@ namespace Vec3 { } const rotTemp = zero(); + const flipMatrix = Mat4.fromScaling(Mat4.zero(), create(-1, -1, -1)) export function makeRotation(mat: Mat4, a: Vec3, b: Vec3): Mat4 { const by = angle(a, b); if (Math.abs(by) < 0.0001) return Mat4.setIdentity(mat); + if (Math.abs(by - Math.PI) < EPSILON.Value) { + // here, axis can be [0,0,0] but the rotation is a simple flip + Mat4.copy(mat, flipMatrix); + return mat; + } const axis = cross(rotTemp, a, b); return Mat4.fromRotation(mat, by, axis); }