Vector3D reflect(Vector3D normal) { final dot = dotProduct(normal); return .vec3( x - (2.0*normal.x)*dot, y - (2.0*normal.y)*dot, z - (2.0*normal.z)*dot, ); }