Include :
- migliorati test IsXplus,... su Vector3d.
This commit is contained in:
@@ -33,6 +33,9 @@ const double SQ_EPS_ZERO = EPS_ZERO * EPS_ZERO ;
|
||||
const double INFINITO = 1e10 ;
|
||||
const double SQ_INFINITO = INFINITO * INFINITO ;
|
||||
|
||||
// coefficiente componente di vettore largamente predominante
|
||||
const double KV_BIG = 1e5 ;
|
||||
|
||||
// conversione da gradi a radianti e viceversa
|
||||
const double PIGRECO = 3.14159265358979323846 ;
|
||||
const double DEGTORAD = PIGRECO / 180. ;
|
||||
|
||||
+20
-12
@@ -14,6 +14,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkGeoConst.h"
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
|
||||
//----------------------- Macro per import/export -----------------------------
|
||||
@@ -70,36 +71,43 @@ class EGK_EXPORT Vector3d
|
||||
{ return ( abs( 1.0 - (x * x + y * y + z * z)) < ( 2 * EPS_ZERO)) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con X+
|
||||
bool IsXplus( void) const
|
||||
{ return ( x > EPS_ZERO && abs( y) < EPS_ZERO && abs( z) < EPS_ZERO) ; }
|
||||
{ double dMO = std::max( abs( y), abs( z)) ;
|
||||
return ( x > EPS_ZERO && dMO < 10 * EPS_ZERO && x > KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con X-
|
||||
bool IsXminus( void) const
|
||||
{ return ( x < - EPS_ZERO && abs( y) < EPS_ZERO && abs( z) < EPS_ZERO) ; }
|
||||
{ double dMO = std::max( abs( y), abs( z)) ;
|
||||
return ( x < -EPS_ZERO && dMO < 10 * EPS_ZERO && x < -KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è parallelo a X
|
||||
bool IsX( void) const
|
||||
{ return ( abs( x) > EPS_ZERO && abs( y) < EPS_ZERO && abs( z) < EPS_ZERO) ; }
|
||||
{ double dMO = std::max( abs( y), abs( z)) ;
|
||||
return ( abs( x) > EPS_ZERO && dMO < 10 * EPS_ZERO && abs( x) > KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con Y+
|
||||
bool IsYplus( void) const
|
||||
{ return ( abs( x) < EPS_ZERO && y > EPS_ZERO && abs( z) < EPS_ZERO) ; }
|
||||
{ double dMO = std::max( abs( z), abs( x)) ;
|
||||
return ( y > EPS_ZERO && dMO < 10 * EPS_ZERO && y > KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con Y-
|
||||
bool IsYminus( void) const
|
||||
{ return ( abs( x) < EPS_ZERO && y < - EPS_ZERO && abs( z) < EPS_ZERO) ; }
|
||||
{ double dMO = std::max( abs( z), abs( x)) ;
|
||||
return ( y < -EPS_ZERO && dMO < 10 * EPS_ZERO && y < -KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è parallelo a Y
|
||||
bool IsY( void) const
|
||||
{ return ( abs( x) < EPS_ZERO && abs( y) > EPS_ZERO && abs( z) < EPS_ZERO) ; }
|
||||
{ double dMO = std::max( abs( z), abs( x)) ;
|
||||
return ( abs( y) > EPS_ZERO && dMO < 10 * EPS_ZERO && abs( y) > KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con Z+
|
||||
bool IsZplus( void) const
|
||||
{ return ( abs( x) < EPS_ZERO && abs( y) < EPS_ZERO && z > EPS_ZERO) ; }
|
||||
{ double dMO = std::max( abs( x), abs( y)) ;
|
||||
return ( z > EPS_ZERO && dMO < 10 * EPS_ZERO && z > KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con Z-
|
||||
bool IsZminus( void) const
|
||||
{ return ( abs( x) < EPS_ZERO && abs( y) < EPS_ZERO && z < - EPS_ZERO) ; }
|
||||
{ double dMO = std::max( abs( x), abs( y)) ;
|
||||
return ( z < -EPS_ZERO && dMO < 10 * EPS_ZERO && z < -KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è parallelo a Z
|
||||
bool IsZ( void) const
|
||||
{ return ( abs( x) < EPS_ZERO && abs( y) < EPS_ZERO && abs( z) > EPS_ZERO) ; }
|
||||
{ double dMO = std::max( abs( x), abs( y)) ;
|
||||
return ( abs( z) > EPS_ZERO && dMO < 10 * EPS_ZERO && abs( z) > KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è generico
|
||||
bool IsGeneric( void) const
|
||||
{ return (( abs( x) > EPS_ZERO && abs( y) > EPS_ZERO) ||
|
||||
( abs( y) > EPS_ZERO && abs( z) > EPS_ZERO) ||
|
||||
( abs( z) > EPS_ZERO && abs( x) > EPS_ZERO)) ; }
|
||||
{ return ( ! IsX() && ! IsY() && ! IsZ()) ; }
|
||||
//! Somma sul posto con altro vettore
|
||||
Vector3d& operator +=( const Vector3d& vtV)
|
||||
{ this->x += vtV.x ; this->y += vtV.y ; this->z += vtV.z ; return *this ; }
|
||||
|
||||
Reference in New Issue
Block a user