Files
EgtGeomKernel/CAvToolTriangle.h
T
Dario Sassi 3a3c591771 EgtGeomKernel 1.9e1 :
- prima versione di Collision Avoiding per Utensili rispetto a Superfici TriMesh.
2018-04-30 14:36:00 +00:00

72 lines
4.2 KiB
C

//----------------------------------------------------------------------------
// EgalTech 2018-2018
//----------------------------------------------------------------------------
// File : CAvToolTriangle.h Data : 27.04.18 Versione : 1.9e1
// Contenuto : Dichiarazione delle funzioni del modulo CAvToolTriangle.
//
//
//
// Modifiche : 10.03.18 LM Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "Tool.h"
#include "/EgtDev/Include/EGkTriangle3d.h"
double CAvToolTriangle( const Tool& tlTool, const Point3d& ptToolOrig, const Vector3d& vtToolAx,
const Triangle3d& trTria, const Vector3d& vtMove) ;
// Componenti:
// Sfera
double CAvSphereTriangle( const Point3d& ptSpheCen, double dSpheRad, const Triangle3d& trTria, const Vector3d& vtMove) ;
double SpherePlaneLeakDist( const Point3d& ptSpheCen, double dSpheRad,
const Point3d& ptPlane, const Vector3d& vtPlaneN, const Vector3d& vtMove) ;
double SphereSegmentLeakDist( const Point3d& ptSpheCen, double dSpheRad,
const Point3d& ptSeg, const Vector3d& vtSegDir, double dSegLen,
const Vector3d& vtMove) ;
double SpherePointLeakDist( const Point3d& ptSpheCen, double dSpheRad, const Point3d ptP, const Vector3d& vtMove) ;
// Cilindro
double CAvCylinderTriangle( const Point3d& ptCompOrig, const Vector3d& vtCompAx, double dHeigth, double dRad,
const Triangle3d& trTria, const Vector3d& vtMove) ;
double DiskSegmentLeakDistLongMotion( const Point3d& ptDisk, const Vector3d& vtDiscLeak, double dDiscRad,
const Point3d& ptSeg, const Vector3d& vtSeg, double dSegLen) ;
double DiskTriaInteriorLeakDistLongMot( const Point3d& ptDisk, const Vector3d& vtDiskAx, double dDiskRad,
const Triangle3d& trTria) ;
double CylPointLeakDistOrtMotion( const Point3d& ptP, const Point3d& ptCompOrig,
const Vector3d& vtCylAx, const Vector3d& vtRemDir,
double dCylHei, double dCylRad) ;
double DiskSegmentLeakDistOrtMot( const Point3d& ptSeg, const Point3d& ptDiscOrig,
const Vector3d& vtSeg, const Vector3d& vtDiscAx, const Vector3d& vtRemDir,
double dSegLen, double dDiscRad) ;
double CylSegmentLeakDistOrtMotion( const Point3d& ptSeg, const Point3d& ptCylOrig,
const Vector3d& vtSeg, const Vector3d& vtCylAx, const Vector3d& vtRemDir,
double dSegLen, double dCylHei, double dCylRad) ;
double DiskPlaneLeakDistOrtMot( const Triangle3d& trTria, const Point3d& ptDiscOrig, const Vector3d& vtDiscAx,
const Vector3d& vtMotion, double dCylRad, Point3d& ptContact) ;
// Funzioni geometriche di base
double GetPointLineSqDist( const Point3d& ptP, const Point3d& ptLine, const Vector3d& vtLine) ;
double PointPlaneSignedDist( const Point3d& ptP, const Point3d& ptPlane, const Vector3d& vtNorm) ;
double ThreePointPlaneSignedDist( const Triangle3d& trTria, const Point3d& ptPlane, const Vector3d& vtNorm) ;
int LinePlaneDDistPar( const Point3d& ptPlane, const Vector3d& vtPlane, const Point3d& ptLine, const Vector3d& vtLine,
double dDist, double& dPar) ;
double LineLineSqDist( const Point3d& ptP1, const Vector3d& vtD1, const Point3d& ptP2, const Vector3d& vtD2) ;
double LineSegmentSqDist( const Point3d& ptPLn, const Vector3d& vtDLn,
const Point3d& ptPSg, const Vector3d& vtDSg, double dSgLen) ;
bool IsPointInsideTriangle( const Point3d& ptP, const Triangle3d& trTria) ;
bool FindMinDistPar( const Point3d& ptL1, const Point3d& ptL2,
const Vector3d& vtV1, const Vector3d& vtV2,
double& dU1, double& dU2) ;
int SphereLineTangentPoints( const Point3d& ptSpheCen, double dSpheRad,
const Point3d& ptSeg, const Vector3d& vtSegDir, double dSegLen,
const Vector3d& vtMove, double& dU1, double& dU2) ;