|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "XJOSGObject.h"
|
|
|
|
|
|
#include "XJObjectManager/OMPeriodicLattice.h"
|
|
|
|
|
|
#include <osg/Geometry>
|
|
|
|
|
|
#include <osgFX/Effect>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class COSGPeriodicLattice : public CXJOSGObject
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
enum {
|
|
|
|
|
|
MeshNode = 0,
|
|
|
|
|
|
IsopletheNode,
|
|
|
|
|
|
FaultNode,
|
|
|
|
|
|
WellNode,
|
|
|
|
|
|
BoundaryNode,
|
|
|
|
|
|
VertexNode
|
|
|
|
|
|
};
|
|
|
|
|
|
COSGPeriodicLattice();
|
|
|
|
|
|
virtual ~COSGPeriodicLattice();
|
|
|
|
|
|
COSGPeriodicLattice(CXJObject * pobj);
|
|
|
|
|
|
|
|
|
|
|
|
virtual int SetValue(CXJObject *obj);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
|
osg::Geode* CreateObject();
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
virtual void UpdatePosition();
|
|
|
|
|
|
|
|
|
|
|
|
virtual void UpdateColor();
|
|
|
|
|
|
void UpdateColor2();
|
|
|
|
|
|
|
|
|
|
|
|
virtual void UpdateWireframe();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɼ<EFBFBD>
|
|
|
|
|
|
virtual void UpdateVisible();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>µ<EFBFBD>ֵ<EFBFBD><D6B5>
|
|
|
|
|
|
virtual void UpdateIsopleth();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void UpdateMeshPoint();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>¾<EFBFBD><C2BE><EFBFBD>
|
|
|
|
|
|
virtual void UpdateWell();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>¶ϲ<C2B6>
|
|
|
|
|
|
virtual void UpdateFault();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
|
|
|
|
|
|
osg::Group* CreateMesh();
|
|
|
|
|
|
osg::Group* CreateMesh2();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|
|
|
|
|
osg::Group* CreateIsoplethes();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>
|
|
|
|
|
|
osg::Group* CreateFaults();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>
|
|
|
|
|
|
osg::Group* CreateControlPoints();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>
|
|
|
|
|
|
osg::Group* CreateBoundarys();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
osg::Group* CreateOtherLines();
|
|
|
|
|
|
private:
|
|
|
|
|
|
osg::Drawable* InsertText(const osg::Vec3& pos, const osg::Vec3& dir, float value);
|
|
|
|
|
|
|
|
|
|
|
|
void InsertPlines(osg::Geode* geode, float zval, bool isMark, std::vector<Polyline2d>& plineData);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>¾<EFBFBD><C2BE><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
void UpdateControlPoints();
|
|
|
|
|
|
private:
|
|
|
|
|
|
OMPeriodicLattice *m_obj;
|
|
|
|
|
|
|
|
|
|
|
|
osg::ref_ptr<osg::Switch> m_pLaySwith;
|
|
|
|
|
|
};
|