diff --git a/MeshGeoToolsLib/GeoMapper.cpp b/MeshGeoToolsLib/GeoMapper.cpp index 49a8267361b87fb94886fd2a8275d5440deccbb9..230c7e471194b5fe88de70e136456b100fcfe92e 100644 --- a/MeshGeoToolsLib/GeoMapper.cpp +++ b/MeshGeoToolsLib/GeoMapper.cpp @@ -413,14 +413,17 @@ static void mapPointOnSurfaceElement(MeshLib::Element const& elem, static std::vector<MeshLib::Element const*> getCandidateElementsForLineSegmentIntersection( MeshLib::MeshElementGrid const& mesh_element_grid, - GeoLib::LineSegment segment) + GeoLib::LineSegment const& segment) { + GeoLib::LineSegment seg_deep_copy( + new GeoLib::Point(segment.getBeginPoint()), + new GeoLib::Point(segment.getEndPoint()), true); // modify z coordinates such that all surface elements around the line // segment are found - segment.getBeginPoint()[2] = mesh_element_grid.getMinPoint()[2]; - segment.getEndPoint()[2] = mesh_element_grid.getMaxPoint()[2]; + seg_deep_copy.getBeginPoint()[2] = mesh_element_grid.getMinPoint()[2]; + seg_deep_copy.getEndPoint()[2] = mesh_element_grid.getMaxPoint()[2]; std::array<MathLib::Point3d, 2> const pnts{ - {segment.getBeginPoint(), segment.getEndPoint()}}; + {seg_deep_copy.getBeginPoint(), seg_deep_copy.getEndPoint()}}; GeoLib::AABB aabb(pnts.cbegin(), pnts.cend()); auto candidate_elements = mesh_element_grid.getElementsInVolume(