From 6cd85913119c500a277217dbe0f15a9b0d389337 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 19 Jan 2015 18:20:20 +0000 Subject: [PATCH] =?UTF-8?q?EgtGraphics=201.6a3=20:=20-=20aggiunta=20possib?= =?UTF-8?q?ilit=C3=A0=20di=20triangolo=20direct?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EgtGraphics.rc | Bin 11580 -> 11580 bytes EgtGraphics.vcxproj | 4 ++++ Scene.h | 9 ++++++++ SceneBasic.cpp | 2 ++ SceneDirect.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 65 insertions(+) diff --git a/EgtGraphics.rc b/EgtGraphics.rc index f3502d4fd14bdd7ade343ef7a8f9d66e203e9530..6333170b86510f84c31f31efd503a258d6e94dd9 100644 GIT binary patch delta 96 zcmdlJwI^!BFE&Qw&4qG;%#6m93%PVRZ&37L+}y-%0ptUP_cKkd63l~0P5vNxV)H$r RZJ08fKS(yPpc~V}4FFr?AeI0C delta 96 zcmdlJwI^!BFE&P_&4qG;%#22p3%PVRZ&37L+}y-%0ptUP_cKkd63l~0P5vNxV)H$r RZJ08fKS(yPpc~V}4FFnYAdUb4 diff --git a/EgtGraphics.vcxproj b/EgtGraphics.vcxproj index 5615484..fbb119c 100644 --- a/EgtGraphics.vcxproj +++ b/EgtGraphics.vcxproj @@ -71,24 +71,28 @@ $(SolutionDir)$(Configuration)$(PlatformArchitecture)\ $(Configuration)$(PlatformArchitecture)\ $(ProjectName)D$(PlatformArchitecture) + C:\;$(IncludePath) true $(SolutionDir)$(Configuration)$(PlatformArchitecture)\ $(Configuration)$(PlatformArchitecture)\ $(ProjectName)D$(PlatformArchitecture) + C:\;$(IncludePath) false $(SolutionDir)$(Configuration)$(PlatformArchitecture)\ $(Configuration)$(PlatformArchitecture)\ $(ProjectName)R$(PlatformArchitecture) + C:\;$(IncludePath) false $(SolutionDir)$(Configuration)$(PlatformArchitecture)\ $(Configuration)$(PlatformArchitecture)\ $(ProjectName)R$(PlatformArchitecture) + C:\;$(IncludePath) diff --git a/Scene.h b/Scene.h index fe10b65..96af576 100644 --- a/Scene.h +++ b/Scene.h @@ -118,6 +118,9 @@ class Scene : public IEGrScene virtual bool SetGeoLineAttribs( Color GLcol) ; virtual bool SetGeoLine( const Point3d& ptP1, const Point3d& ptP2) ; virtual bool ResetGeoLine( void) ; + virtual bool SetGeoTriaAttribs( Color GTcol) ; + virtual bool SetGeoTria( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptP3) ; + virtual bool ResetGeoTria( void) ; virtual bool SetWinRectAttribs( bool bOutline, Color WRcol) ; virtual bool SetWinRect( const Point3d& ptWinRectP1, const Point3d& ptWinRectP2) ; virtual bool ResetWinRect( void) ; @@ -176,6 +179,7 @@ class Scene : public IEGrScene // Direct bool DrawDirect( void) ; bool DrawGeoLine( void) ; + bool DrawGeoTria( void) ; bool DrawWinRect( void) ; // Snap bool GetGridSnapPoint( bool bSketch, const Point3d& ptWin, Point3d& ptSel) ; @@ -249,6 +253,11 @@ class Scene : public IEGrScene bool m_bGeoLine ; // flag esistenza linea diretta in finestra Point3d m_ptGeoLineP1 ; // primo estremo della linea diretta Point3d m_ptGeoLineP2 ; // secondo estremo della linea diretta + Color m_colorGT ; // colore per GeoTria + bool m_bGeoTria ; // flag esistenza triangolo diretto in finestra + Point3d m_ptGeoTriaP1 ; // primo estremo del triangolo diretto + Point3d m_ptGeoTriaP2 ; // secondo estremo del triangolo diretto + Point3d m_ptGeoTriaP3 ; // terzo estremo del triangolo diretto bool m_bOutlineWR ; // flag per disegno WinRect con solo contorno o pieno Color m_colorWR ; // colore per WinRect bool m_bWinRect ; // flag esistenza rettangolo diretto in finestra diff --git a/SceneBasic.cpp b/SceneBasic.cpp index 01238a0..fd1334f 100644 --- a/SceneBasic.cpp +++ b/SceneBasic.cpp @@ -85,6 +85,8 @@ Scene::Scene( void) // Direct m_colorGL.Set( 255, 0, 0) ; m_bGeoLine = false ; + m_colorGT.Set( 255, 0, 0) ; + m_bGeoTria = false ; m_bOutlineWR = true ; m_colorWR.Set( 0, 0, 0) ; m_bWinRect = false ; diff --git a/SceneDirect.cpp b/SceneDirect.cpp index fdf4702..b7cc8fe 100644 --- a/SceneDirect.cpp +++ b/SceneDirect.cpp @@ -55,6 +55,37 @@ Scene::ResetGeoLine( void) return bOld ; } +//---------------------------------------------------------------------------- +bool +Scene::SetGeoTriaAttribs( Color GTcol) +{ + m_colorGT = GTcol ; + return true ; +} + +//---------------------------------------------------------------------------- +bool +Scene::SetGeoTria( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptP3) +{ + m_bGeoTria = true ; + m_ptGeoTriaP1 = ptP1 ; + m_ptGeoTriaP2 = ptP2 ; + m_ptGeoTriaP3 = ptP3 ; + + return ( ! AreSamePointApprox( m_ptGeoTriaP1, m_ptGeoTriaP2) && + ! AreSamePointApprox( m_ptGeoTriaP1, m_ptGeoTriaP3)) ; +} + +//---------------------------------------------------------------------------- +bool +Scene::ResetGeoTria( void) +{ + bool bOld = m_bGeoTria ; + m_bGeoTria = false ; + + return bOld ; +} + //---------------------------------------------------------------------------- bool Scene::SetWinRectAttribs( bool bOutline, Color WRcol) @@ -95,6 +126,10 @@ Scene::DrawDirect( void) if ( ! DrawGeoLine()) bOk = false ; } + if ( m_bGeoTria) { + if ( ! DrawGeoTria()) + bOk = false ; + } if ( m_bWinRect) { if ( ! DrawWinRect()) bOk = false ; @@ -117,6 +152,21 @@ Scene::DrawGeoLine( void) return true ; } +//---------------------------------------------------------------------------- +bool +Scene::DrawGeoTria( void) +{ + // disegno triangolo in geometria globale + glBegin( GL_LINE_LOOP) ; + glColor3f( m_colorGT.GetRed(), m_colorGT.GetGreen(), m_colorGT.GetBlue()) ; + glVertex3f( float( m_ptGeoTriaP1.x), float( m_ptGeoTriaP1.y), float( m_ptGeoTriaP1.z)) ; + glVertex3f( float( m_ptGeoTriaP2.x), float( m_ptGeoTriaP2.y), float( m_ptGeoTriaP2.z)) ; + glVertex3f( float( m_ptGeoTriaP3.x), float( m_ptGeoTriaP3.y), float( m_ptGeoTriaP3.z)) ; + glEnd() ; + + return true ; +} + //---------------------------------------------------------------------------- bool Scene::DrawWinRect( void)