From 4520fe1bbc754547e543acf6089a19570c2fdac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Herje?= Date: Mon, 11 Mar 2024 14:57:59 +0100 Subject: [PATCH] Fix incorrect segment data - Missing polygonToCellIndexMap - Incorrect polygonIndices --- ...vPolylineIntersectionGeometryGenerator.cpp | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ApplicationLibCode/ModelVisualization/Intersections/RivPolylineIntersectionGeometryGenerator.cpp b/ApplicationLibCode/ModelVisualization/Intersections/RivPolylineIntersectionGeometryGenerator.cpp index e711cd1e6a..1a661a3488 100644 --- a/ApplicationLibCode/ModelVisualization/Intersections/RivPolylineIntersectionGeometryGenerator.cpp +++ b/ApplicationLibCode/ModelVisualization/Intersections/RivPolylineIntersectionGeometryGenerator.cpp @@ -187,8 +187,9 @@ void RivPolylineIntersectionGeometryGenerator::calculateArrays( cvf::UByteArray* size_t cornerIndices[8]; // Mesh data for polyline segment - std::vector polygonVerticesUz = {}; - std::vector verticesPerPolygon = {}; + std::vector polygonVerticesUz = {}; + std::vector verticesPerPolygon = {}; + std::vector polygonToCellIndexMap = {}; // Handle triangles per cell for ( const auto globalCellIdx : columnCellCandidates ) @@ -276,6 +277,7 @@ void RivPolylineIntersectionGeometryGenerator::calculateArrays( cvf::UByteArray* calculatedPolygonVertices.push_back( cvf::Vec3f( vertex + p1 ) ); } verticesPerPolygon.push_back( static_cast( vertices.size() ) ); + polygonToCellIndexMap.push_back( static_cast( globalCellIdx ) ); // Keep old code for debugging purposes m_verticesPerPolygon.push_back( vertices.size() ); // TODO: Remove when not needed for debug @@ -283,16 +285,18 @@ void RivPolylineIntersectionGeometryGenerator::calculateArrays( cvf::UByteArray* } // Create polygon indices array - std::vector polygonIndices( polygonVerticesUz.size() ); + const auto numVertices = static_cast( polygonVerticesUz.size() / 2 ); + std::vector polygonIndices( numVertices ); std::iota( polygonIndices.begin(), polygonIndices.end(), 0 ); // Construct polyline segment mesh data PolylineSegmentMeshData polylineSegmentData; - polylineSegmentData.startUtmXY = cvf::Vec2d( p1.x(), p1.y() ); - polylineSegmentData.endUtmXY = cvf::Vec2d( p2.x(), p2.y() ); - polylineSegmentData.vertexArrayUZ = polygonVerticesUz; - polylineSegmentData.verticesPerPolygon = verticesPerPolygon; - polylineSegmentData.polygonIndices = polygonIndices; + polylineSegmentData.startUtmXY = cvf::Vec2d( p1.x(), p1.y() ); + polylineSegmentData.endUtmXY = cvf::Vec2d( p2.x(), p2.y() ); + polylineSegmentData.vertexArrayUZ = polygonVerticesUz; + polylineSegmentData.verticesPerPolygon = verticesPerPolygon; + polylineSegmentData.polygonIndices = polygonIndices; + polylineSegmentData.polygonToCellIndexMap = polygonToCellIndexMap; // Add polyline segment mesh data to list m_polylineSegmentsMeshData.push_back( polylineSegmentData );