Vector3 reflect(Vector3 normal) { // reflect incident vector off plane orthogonal to normal // normal is assumed to have unit length return sub(_vector3.copy(normal).multiplyScalar(2 * dot(normal))); }