12 const auto& tMatrix =
transform(gctx).matrix();
13 return Vector3D(tMatrix(0, 2), tMatrix(1, 2), tMatrix(2, 2));
25 return 1. /
std::abs(Surface::normal(gctx, position).dot(direction));
32 const auto& gctxTransform =
transform(gctx);
37 if (intersection.status != Intersection3D::Status::unreachable and bcheck) {
39 const auto& tMatrix = gctxTransform.matrix();
41 const Vector3D vecLocal(intersection.position - tMatrix.block<3, 1>(0, 3));
42 if (not insideBounds(tMatrix.block<3, 2>(0, 0).transpose() * vecLocal,
44 intersection.status = Intersection3D::Status::missed;
47 return {intersection,
this};
51 PlaneSurface::localCartesianToBoundLocalDerivative(
54 LocalCartesianToBoundLocalMatrix::Identity();
55 return loc3DToLocBound;