From 0ca79a318c420626b3cc9596a967cc64f919f7c9 Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Tue, 23 Aug 2016 12:14:26 +0200 Subject: [PATCH] [MGTL] Deep copy of seg to avoid modifying orig. pnts. --- MeshGeoToolsLib/GeoMapper.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/MeshGeoToolsLib/GeoMapper.cpp b/MeshGeoToolsLib/GeoMapper.cpp index 49a8267361b..230c7e47119 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( -- GitLab