From e9afd825aed3d441820e95a08e3b3e6f8217047b Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 22 Jan 2018 19:13:38 +0000 Subject: [PATCH] Include : - migliorata classe Triangle3dEx. --- EGkTriangle3d.h | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/EGkTriangle3d.h b/EGkTriangle3d.h index 4bf0a3d..fe4de26 100644 --- a/EGkTriangle3d.h +++ b/EGkTriangle3d.h @@ -237,6 +237,56 @@ class Triangle3dEx : public Triangle3d } return true ; } + bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngDeg) + { double dAngRad = dAngDeg * DEGTORAD ; + return Rotate( ptAx, vtAx, cos( dAngRad), sin( dAngRad)) ; } + bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) + { m_ptP[0].Rotate( ptAx, vtAx, dCosAng, dSinAng) ; + m_ptP[1].Rotate( ptAx, vtAx, dCosAng, dSinAng) ; + m_ptP[2].Rotate( ptAx, vtAx, dCosAng, dSinAng) ; + m_vtN.Rotate( vtAx, dCosAng, dSinAng) ; + for ( int i = 0 ; i < 3 ; ++ i) + m_triN.vtN[i].Rotate( vtAx, dCosAng, dSinAng) ; + } + bool Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double dCoeffZ) + { m_ptP[0].Scale( frRef, dCoeffX, dCoeffY, dCoeffZ) ; + m_ptP[1].Scale( frRef, dCoeffX, dCoeffY, dCoeffZ) ; + m_ptP[2].Scale( frRef, dCoeffX, dCoeffY, dCoeffZ) ; + for ( int i = 0 ; i < 3 ; ++ i) + m_triN.vtN[i] = V_NULL ; + Validate( true) ; + } + bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) + { m_ptP[0].Mirror( ptOn, vtNorm) ; + m_ptP[1].Mirror( ptOn, vtNorm) ; + m_ptP[2].Mirror( ptOn, vtNorm) ; + for ( int i = 0 ; i < 3 ; ++ i) + m_triN.vtN[i].Mirror( vtNorm) ; + Validate( true) ; + } + bool Shear( const Point3d& ptOn, const Vector3d& vtNorm, const Vector3d& vtDir, double dCoeff) + { m_ptP[0].Shear( ptOn, vtNorm, vtDir, dCoeff) ; + m_ptP[1].Shear( ptOn, vtNorm, vtDir, dCoeff) ; + m_ptP[2].Shear( ptOn, vtNorm, vtDir, dCoeff) ; + for ( int i = 0 ; i < 3 ; ++ i) + m_triN.vtN[i] = V_NULL ; + Validate( true) ; + } + bool ToGlob( const Frame3d& frRef) + { return ( m_ptP[0].ToGlob( frRef) && m_ptP[1].ToGlob( frRef) && m_ptP[2].ToGlob( frRef) && m_vtN.ToGlob( frRef) && + m_triN.vtN[0].ToGlob( frRef) && m_triN.vtN[1].ToGlob( frRef) && m_triN.vtN[2].ToGlob( frRef)) ; } + bool ToLoc( const Frame3d& frRef) + { return ( m_ptP[0].ToLoc( frRef) && m_ptP[1].ToLoc( frRef) && m_ptP[2].ToLoc( frRef) && m_vtN.ToLoc( frRef) && + m_triN.vtN[0].ToLoc( frRef) && m_triN.vtN[1].ToLoc( frRef) && m_triN.vtN[2].ToLoc( frRef)) ; } + bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) + { return ( m_ptP[0].LocToLoc( frOri, frDest) && + m_ptP[1].LocToLoc( frOri, frDest) && + m_ptP[2].LocToLoc( frOri, frDest) && + m_vtN.LocToLoc( frOri, frDest) && + m_triN.vtN[0].LocToLoc( frOri, frDest) && + m_triN.vtN[1].LocToLoc( frOri, frDest) && + m_triN.vtN[2].LocToLoc( frOri, frDest)) ; } + private : TriFlags3d m_triF ; TriNormals3d m_triN ;