30 m_bounds(other.m_bounds) {}
33 :
Surface(), m_bounds(nullptr) {
40 ? Vector3D::UnitZ().cross(T).normalized()
41 : Vector3D::UnitX().cross(T).normalized();
44 curvilinearRotation.col(0) = U;
45 curvilinearRotation.col(1) = V;
46 curvilinearRotation.col(2) =
T;
55 const std::shared_ptr<const PlanarBounds>& pbounds,
57 :
Surface(detelement), m_bounds(pbounds) {
59 throw_assert(pbounds,
"PlaneBounds must not be nullptr");
63 std::shared_ptr<const PlanarBounds> pbounds)
64 :
Surface(std::move(htrans)), m_bounds(std::move(pbounds)) {}
93 lposition =
Vector2D(loc3Dframe.x(), loc3Dframe.y());
94 return ((loc3Dframe.z() * loc3Dframe.z() >
101 return "Acts::PlaneSurface";
106 return (*m_bounds.get());
114 std::vector<Vector3D> vertices;
115 std::vector<Polyhedron::FaceType> faces;
116 std::vector<Polyhedron::FaceType> triangularMesh;
120 auto vertices2D = m_bounds->
vertices(lseg);
121 vertices.reserve(vertices2D.size() + 1);
122 for (
const auto& v2D : vertices2D) {
126 bool innerExists =
false, coversFull =
false;
128 auto vStore = bounds().values();
137 if (not isEllipse or not innerExists or not coversFull) {
139 faces = facesMesh.first;
140 triangularMesh = facesMesh.second;
146 faces = facesMesh.first;
147 triangularMesh = facesMesh.second;
150 throw std::domain_error(
151 "Polyhedron repr of boundless surface not possible.");
153 return Polyhedron(vertices, faces, triangularMesh);