EgtGraphics 1.5c3 :
- aggiunta visualizzaziono di punti, vettori e frame - aggiunti NewGrAtom per gestione potenziata e con colori di VAO/VBO - aggiunti OldGrAtom per displaylist proprietarie in modo OpenGL immediato.
This commit is contained in:
+57
-14
@@ -21,6 +21,8 @@
|
||||
#include "/EgtDev/Include/EGkFrame3d.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
#include "/EgtDev/Include/EGkGdbIterator.h"
|
||||
#include "/EgtDev/Include/EGkGeoVector3d.h"
|
||||
#include "/EgtDev/Include/EGkGeoPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
|
||||
using namespace std ;
|
||||
@@ -146,26 +148,67 @@ Scene::DrawGeoObj( IGeoObj* pGeoObj)
|
||||
pGraphics->SetScene( this) ;
|
||||
pGeoObj->SetObjGraphics( pGraphics) ;
|
||||
}
|
||||
// leggo il tipo di oggetto geometrico
|
||||
int nGeoType = pGeoObj->GetType() ;
|
||||
// se curva
|
||||
if ( ( nGeoType & GEO_CURVE) != 0) {
|
||||
// recupero la curva
|
||||
const ICurve* pCurve = GetCurve( pGeoObj) ;
|
||||
if ( pCurve == nullptr)
|
||||
return false ;
|
||||
// se la grafica associata non è valida la ricalcolo
|
||||
ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pGeoObj) ;
|
||||
if ( ! pGraphics->IsValid()) {
|
||||
|
||||
// se la grafica associata non è valida la ricalcolo
|
||||
ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pGeoObj) ;
|
||||
if ( ! pGraphics->IsValid()) {
|
||||
// leggo il tipo di oggetto geometrico
|
||||
int nGeoType = pGeoObj->GetType() ;
|
||||
// se vettore
|
||||
if ( nGeoType == GEO_VECT3D) {
|
||||
// recupero il vettore
|
||||
const IGeoVector3d* pVector = GetGeoVector3d( pGeoObj) ;
|
||||
if ( pVector == nullptr)
|
||||
return false ;
|
||||
// calcolo la grafica
|
||||
PolyLine PL ;
|
||||
pVector->GetDrawWithArrowHead( 0.1, PL) ;
|
||||
pGraphics->Clear() ;
|
||||
pGraphics->AddPolyLine( PL) ;
|
||||
}
|
||||
// se punto
|
||||
else if ( nGeoType == GEO_PNT3D) {
|
||||
// recupero il punto
|
||||
const IGeoPoint3d* pPoint = GetGeoPoint3d( pGeoObj) ;
|
||||
if ( pPoint == nullptr)
|
||||
return false ;
|
||||
// calcolo la grafica
|
||||
pGraphics->Clear() ;
|
||||
pGraphics->AddPoint( pPoint->GetPoint()) ;
|
||||
}
|
||||
// se riferimento
|
||||
else if ( nGeoType == GEO_FRAME3D) {
|
||||
// recupero il riferimento
|
||||
const IGeoFrame3d* pFrame = GetGeoFrame3d( pGeoObj) ;
|
||||
if ( pFrame == nullptr)
|
||||
return false ;
|
||||
// aggiorno la grafica
|
||||
PolyLine plX, plY, plZ ;
|
||||
pFrame->GetDrawWithArrowHeads( 10, 0.1, plX, plY, plZ) ;
|
||||
pGraphics->Clear() ;
|
||||
pGraphics->AddColor( RED) ;
|
||||
pGraphics->AddPolyLine( plX) ;
|
||||
pGraphics->AddColor( GREEN) ;
|
||||
pGraphics->AddPolyLine( plY) ;
|
||||
pGraphics->AddColor( BLUE) ;
|
||||
pGraphics->AddPolyLine( plZ) ;
|
||||
}
|
||||
// se curva
|
||||
else if ( ( nGeoType & GEO_CURVE) != 0) {
|
||||
// recupero la curva
|
||||
const ICurve* pCurve = GetCurve( pGeoObj) ;
|
||||
if ( pCurve == nullptr)
|
||||
return false ;
|
||||
// calcolo la grafica
|
||||
PolyLine PL ;
|
||||
pCurve->ApproxWithLines( 0.1, 5, PL) ;
|
||||
pGraphics->Clear() ;
|
||||
pGraphics->AddPolyLine( PL) ;
|
||||
}
|
||||
// visualizzo la grafica associata
|
||||
pGraphics->Draw() ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
// visualizzo la grafica associata
|
||||
return pGraphics->Draw() ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user