32 :
Surface(), m_bounds(nullptr) {
39 ? Vector3D::UnitZ().cross(T).normalized()
40 : Vector3D::UnitX().cross(T).normalized();
43 curvilinearRotation.col(0) = U;
44 curvilinearRotation.col(1) = V;
45 curvilinearRotation.col(2) =
T;
53 const std::shared_ptr<const PlanarBounds>& pbounds,
55 :
Surface(detelement), m_bounds(pbounds) {
57 throw_assert(pbounds,
"PlaneBounds must not be nullptr");
61 std::shared_ptr<const PlanarBounds> pbounds)
62 :
Surface(transform), m_bounds(std::move(pbounds)) {}
87 if (loc3Dframe.z() * loc3Dframe.z() >
95 return "Acts::PlaneSurface";
100 return (*m_bounds.get());
108 std::vector<Vector3D> vertices;
109 std::vector<Polyhedron::FaceType> faces;
110 std::vector<Polyhedron::FaceType> triangularMesh;
111 bool exactPolyhedron =
true;
115 auto vertices2D = m_bounds->
vertices(lseg);
116 vertices.reserve(vertices2D.size() + 1);
117 for (
const auto& v2D : vertices2D) {
121 bool innerExists =
false, coversFull =
false;
123 exactPolyhedron =
false;
124 auto vStore = bounds().values();
133 if (not isEllipse or not innerExists or not coversFull) {
135 faces = facesMesh.first;
136 triangularMesh = facesMesh.second;
142 faces = facesMesh.first;
143 triangularMesh = facesMesh.second;
146 throw std::domain_error(
147 "Polyhedron repr of boundless surface not possible.");
149 return Polyhedron(vertices, faces, triangularMesh, exactPolyhedron);