mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1040 Established basis for fracture visualization
This commit is contained in:
@@ -18,10 +18,14 @@
|
||||
|
||||
#include "RimFracture.h"
|
||||
|
||||
#include "RigFracture.h"
|
||||
#include "RigTesselatorTools.h"
|
||||
#include "RimFractureDefinition.h"
|
||||
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimFracture, "Fracture");
|
||||
|
||||
CAF_PDM_XML_ABSTRACT_SOURCE_INIT(RimFracture, "Fracture");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@@ -30,6 +34,7 @@ RimFracture::RimFracture(void)
|
||||
{
|
||||
CAF_PDM_InitObject("Fracture", "", "", "");
|
||||
|
||||
m_rigFracture = new RigFracture;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -39,3 +44,53 @@ RimFracture::~RimFracture()
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const std::vector<cvf::uint>& RimFracture::polygonIndices() const
|
||||
{
|
||||
return m_rigFracture->polygonIndices();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const std::vector<cvf::Vec3f>& RimFracture::nodeCoords() const
|
||||
{
|
||||
return m_rigFracture->nodeCoords();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimFracture::computeGeometry()
|
||||
{
|
||||
std::vector<cvf::Vec3f> nodeCoords;
|
||||
std::vector<cvf::uint> polygonIndices;
|
||||
|
||||
cvf::Vec3d center = centerPointForFracture();
|
||||
RimFractureDefinition* fractureDef = attachedFractureDefinition();
|
||||
if (fractureDef && !center.isUndefined())
|
||||
{
|
||||
RigEllipsisTesselator tesselator(20);
|
||||
|
||||
float a = fractureDef->height / 2.0f;
|
||||
float b = fractureDef->halfLength;
|
||||
|
||||
tesselator.tesselateEllipsis(a, b, &polygonIndices, &nodeCoords);
|
||||
|
||||
}
|
||||
|
||||
// TODO: Modify coords by fracture center and orientation
|
||||
|
||||
m_rigFracture->setGeometry(polygonIndices, nodeCoords);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimFracture::hasValidGeometry() const
|
||||
{
|
||||
return (nodeCoords().size() > 0 && polygonIndices().size() > 0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user