//---------------------------------------------------------------------------- // EgalTech 2022-2022 //---------------------------------------------------------------------------- // File : Circle2P.cpp Data : 18.08.22 Versione : 2.4h2 // Contenuto : Implementazione funzioni per calcolo circonferenze per 2 punti // diametrali. // // // Modifiche : 18.08.22 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "CurveArc.h" #include "/EgtDev/Include/EGkCircle2P.h" #include "/EgtDev/Include/EgtPointerOwner.h" using namespace std ; //---------------------------------------------------------------------------- ICurveArc* GetCircle2P( const Point3d& ptP1, const Point3d& ptP2, const Vector3d& vtN) { // Verifico che i due punti siano distinti if ( AreSamePointEpsilon( ptP1, ptP2, EPS_SMALL)) return nullptr ; // verifico che la normale non sia allineata con i punti Vector3d vtO = OrthoCompo( vtN, ptP2 - ptP1) ; if ( ! vtO.Normalize()) return nullptr ; // Creo l'oggetto arco PtrOwner pCrvArc( CreateBasicCurveArc()) ; if ( IsNull( pCrvArc)) return nullptr ; // Eseguo calcoli if ( ! pCrvArc->SetCPAN( Media( ptP1, ptP2), ptP1, ANG_FULL, 0, vtO)) return nullptr ; return Release( pCrvArc) ; }