mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1724 Fix mapping from picked triangle index to segment index
This commit is contained in:
@@ -38,7 +38,7 @@ RivPipeGeometryGenerator::RivPipeGeometryGenerator()
|
||||
m_crossSectionNodeCount = 8;
|
||||
m_minimumBendAngle = 80.0;
|
||||
m_bendScalingFactor = 0.00001;
|
||||
m_firstSegmentIndex = 0;
|
||||
m_firstVisibleSegmentIndex = 0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -590,31 +590,22 @@ void RivPipeGeometryGenerator::clearComputedData()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
size_t RivPipeGeometryGenerator::segmentIndexFromTriangleIndex(size_t triangleIndex) const
|
||||
size_t RivPipeGeometryGenerator::pipeSegmentIndexFromTriangleIndex(size_t triangleIndex) const
|
||||
{
|
||||
size_t filteredIndex = triangleIndex / (m_crossSectionNodeCount * 2);
|
||||
|
||||
return filteredIndex + m_firstSegmentIndex;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
size_t RivPipeGeometryGenerator::pipeResultIndexFromTriangleIndex(size_t triangleIndex) const
|
||||
{
|
||||
size_t segIndex = segmentIndexFromTriangleIndex(triangleIndex);
|
||||
size_t segIndex = triangleIndex / (m_crossSectionNodeCount * 2);
|
||||
|
||||
CVF_ASSERT(segIndex < m_filteredPipeSegmentToResult.size());
|
||||
size_t resultIndex = m_filteredPipeSegmentToResult[segIndex];
|
||||
|
||||
return resultIndex;
|
||||
return resultIndex + m_firstVisibleSegmentIndex;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Well pipes are clipped, set index to first segment in visible well path
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RivPipeGeometryGenerator::setFirstSegmentIndex(size_t segmentIndex)
|
||||
void RivPipeGeometryGenerator::setFirstVisibleSegmentIndex(size_t segmentIndex)
|
||||
{
|
||||
m_firstSegmentIndex = segmentIndex;
|
||||
m_firstVisibleSegmentIndex = segmentIndex;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -62,9 +62,8 @@ public:
|
||||
void pipeSurfaceTextureCoords(cvf::Vec2fArray* textureCoords, const std::vector<double>& segmentResults, const cvf::ScalarMapper* mapper) const;
|
||||
void centerlineTextureCoords(cvf::Vec2fArray* textureCoords, const std::vector<double>& segmentResults, const cvf::ScalarMapper* mapper) const;
|
||||
|
||||
void setFirstSegmentIndex(size_t segmentIndex);
|
||||
size_t segmentIndexFromTriangleIndex(size_t triangleIndex) const;
|
||||
size_t pipeResultIndexFromTriangleIndex(size_t triangleIndex) const;
|
||||
void setFirstVisibleSegmentIndex(size_t segmentIndex);
|
||||
size_t pipeSegmentIndexFromTriangleIndex(size_t triangleIndex) const;
|
||||
|
||||
void cylinderWithCenterLineParts(cvf::Collection<cvf::Part>* destinationParts, const std::vector<cvf::Vec3d>& centerCoords, const cvf::Color3f& color, double radius);
|
||||
private:
|
||||
@@ -95,7 +94,7 @@ private:
|
||||
// Map from generated cylinder segments to pipe result indices
|
||||
std::vector<size_t> m_filteredPipeSegmentToResult;
|
||||
|
||||
size_t m_firstSegmentIndex;
|
||||
size_t m_firstVisibleSegmentIndex;
|
||||
|
||||
double m_radius;
|
||||
double m_minimumBendAngle;
|
||||
|
||||
@@ -370,7 +370,7 @@ void RivSimWellPipesPartMgr::findGridIndexAndCellIndex(size_t branchIndex, size_
|
||||
RivPipeBranchData* branchData = pipeBranchData(branchIndex);
|
||||
if (branchData)
|
||||
{
|
||||
size_t resultIndex = branchData->m_pipeGeomGenerator->pipeResultIndexFromTriangleIndex(triangleIndex);
|
||||
size_t resultIndex = branchData->m_pipeGeomGenerator->pipeSegmentIndexFromTriangleIndex(triangleIndex);
|
||||
|
||||
*gridIndex = branchData->m_cellIds[resultIndex].m_gridIndex;
|
||||
*cellIndex = branchData->m_cellIds[resultIndex].m_gridCellIndex;
|
||||
|
||||
@@ -277,7 +277,7 @@ void RivWellPathPartMgr::buildWellPathParts(const caf::DisplayCoordTransform* di
|
||||
clippedPoints.push_back(wellPathGeometry->m_wellPathPoints[idx]);
|
||||
}
|
||||
|
||||
pbd.m_pipeGeomGenerator->setFirstSegmentIndex(firstVisibleSegmentIndex);
|
||||
pbd.m_pipeGeomGenerator->setFirstVisibleSegmentIndex(firstVisibleSegmentIndex);
|
||||
}
|
||||
|
||||
if (clippedPoints.size() < 2) return;
|
||||
@@ -445,7 +445,7 @@ void RivWellPathPartMgr::clearAllBranchData()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
size_t RivWellPathPartMgr::segmentIndexFromTriangleIndex(size_t triangleIndex)
|
||||
{
|
||||
return m_pipeBranchData.m_pipeGeomGenerator->segmentIndexFromTriangleIndex(triangleIndex);
|
||||
return m_pipeBranchData.m_pipeGeomGenerator->pipeSegmentIndexFromTriangleIndex(triangleIndex);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user