Files
DarioS 78b9234865 EgtGeomKernel 2.4h2 :
- in CurveArc migliorato controllo valore parametro in ChangeRadius e ChangeAngCenter
- migliorato calcolo fillet con possibilità di arrivare a 180 deg
- aggiunta GetCircle2P per creazione circonferenza da due punti su estremi di un diametro.
2022-08-21 16:16:02 +02:00

45 lines
1.4 KiB
C++

//----------------------------------------------------------------------------
// 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<CurveArc> 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) ;
}