25 #include <qmatrix4x4.h>
26 #include <qnamespace.h>
27 #include <qopengltexture.h>
84 TYPoint pt = getElement()->getPosition();
85 OVector3D vecOrientation = getElement()->getOrientation().toVector3D();
98 pTYElementGraphic = getElement()->getTopographie()->getGraphicObject().getRealPointer();
99 childs.push_back(pTYElementGraphic);
102 pTYElementGraphic->
getChilds(childs, recursif);
105 pTYElementGraphic = getElement()->getInfrastructure()->getGraphicObject().getRealPointer();
106 childs.push_back(pTYElementGraphic);
109 pTYElementGraphic->
getChilds(childs, recursif);
115 for (
unsigned int i = 0; i < TabSite.size(); i++)
117 pTYElementGraphic = TabSite.at(i)->getGraphicObject().getRealPointer();
118 childs.push_back(pTYElementGraphic);
121 pTYElementGraphic->
getChilds(childs, recursif);
128 if (!getElement()->isInCurrentCalcul())
137 float fSiteNodeAltitude = (float)getElement()->getAltiEmprise();
138 glTranslatef(0.0f, 0.0f, -fSiteNodeAltitude);
140 getElement()->getTopographie()->getGraphicObject()->display(renderContext);
141 getElement()->getInfrastructure()->getGraphicObject()->display(renderContext);
145 glTranslatef(0.0f, 0.0f, 0.01f);
147 for (
unsigned int i = 0; i < TabSite.size(); i++)
151 if (TabSite.at(i)->getElement()->isInCurrentCalcul())
154 float fSiteNodeChildAltitude = pTYSiteNodeChild->
getAltiEmprise();
156 glTranslatef(0.0f, 0.0f, fSiteNodeChildAltitude);
157 TabSite.at(i)->getGraphicObject()->display(renderContext);
158 glTranslatef(0.0f, 0.0f, -fSiteNodeChildAltitude);
162 glTranslatef(0.0f, 0.0f, -0.01f + fSiteNodeAltitude);
168 bool renderBackgroundImage = getElement()->getUseTopoFile() &&
_imageMesh !=
nullptr;
169 if (renderContext !=
nullptr)
173 if (renderBackgroundImage)
174 if (getElement()->getUseTopoFile() &&
_imageMesh !=
nullptr)
176 QMatrix4x4 backgroundImageTransform;
177 float fSiteNodeAltitude = (float)getElement()->getAltiEmprise();
178 backgroundImageTransform.translate(0, 0, -fSiteNodeAltitude);
181 OVector3D vecOrientation = getElement()->getOrientation().toVector3D();
184 if (vecOrientation.
norme() != 0)
187 angle =
SIGNE(vecOrientation.
_y) * acos(vecOrientation.
_x / vecOrientation.
norme());
188 angle = (
M_PI / 2.0) - angle;
191 float fImgZOffset = 0.1f;
192 if (getElement()->getUseEmpriseAsCrbNiv())
194 fImgZOffset += (float)getElement()->getAltiEmprise();
196 backgroundImageTransform.translate(0, 0, fImgZOffset);
198 backgroundImageTransform.rotate(angle * 180 /
M_PI, 0.0, 0.0, 1.0);
200 TYPoint pt = getElement()->getPosition();
201 backgroundImageTransform.translate(pt.
_x, pt.
_y, pt.
_z);
208 void TYSiteNodeGraphic::connectUpdateSignal(QObject* pReceiver,
const char* member)
215 void TYSiteNodeGraphic::disconnectUpdateSignal(QObject* pReceiver,
const char* member)
double SIGNE(double a)
Return the number sign.
list< TYElementGraphic * > TYListPtrTYElementGraphic
List de pointeur de TYElement.
Contexte de rendu utilisé par les fonctions d'affichage.
Classe Modeler specialisee pour l'edition des sites (fichier header)
Representation graphique d'un ensemble de sites (fichier header)
std::vector< LPTYSiteNodeGeoNode > TYTabSiteNodeGeoNode
Collection de noeuds geometriques de type TYSiteNode.
Representation graphique d'une topographie (fichier header)
double _y
y coordinate of OCoord3D
double _z
z coordinate of OCoord3D
double _x
x coordinate of OCoord3D
double norme() const
Computes the length of this vector.
classe graphique pour un element de base
bool _visible
Inique si l'element est visible.
virtual void update(bool force=false)
virtual void getChilds(TYListPtrTYElementGraphic &childs, bool recursif=true)
virtual void display(TYRenderContext &renderContext)
QMatrix4x4 globalMatrix() const
virtual void update(bool force=false)
TYSiteNodeGraphic(TYSiteNode *pElement)
std::shared_ptr< OGLRectangleMesh > _imageMesh
virtual void getChilds(TYListPtrTYElementGraphic &childs, bool recursif=true)
void collectMeshInstances(std::vector< OGLMeshInstance > &meshInstances, TYRenderContext *renderContext) const override
virtual void display(TYRenderContext &renderContext)
void updateBackgroundImage()
virtual ~TYSiteNodeGraphic()
std::shared_ptr< QImage > _backgroundImage
const double getAltiEmprise() const
TYTabSiteNodeGeoNode & getListSiteNode()
QString getTopoFileName() const
bool getUseTopoFile() const
classe graphique pour une topographie
void setBackgroundImage(std::shared_ptr< QImage > &image, int semiX, int semiY, TYPoint ptPosition, OVector3D bgOrientation)
void unsetBackgroundImage()