From 7b6f1c3e92a1dc022420fa8f5a72459e5a15782c Mon Sep 17 00:00:00 2001 From: DarioS Date: Fri, 22 Apr 2022 08:53:06 +0200 Subject: [PATCH] EgtGeomKernel : - aggiunta funzione FromNearestHorizontalOrtho per Vector3d. --- Vector3d.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Vector3d.cpp b/Vector3d.cpp index 2612bed..cb8143f 100644 --- a/Vector3d.cpp +++ b/Vector3d.cpp @@ -65,6 +65,26 @@ FromUprightOrtho( const Vector3d& vtV) return ( vtV ^ vtAx) ; } +//---------------------------------------------------------------------------- +// Definizione dall'ortogonale al primo ricevuto, orizzontale e pił vicino al secondo +//---------------------------------------------------------------------------- +Vector3d +FromNearestHorizontalOrtho( const Vector3d& vtV, const Vector3d& vtNear) +{ + // se vettore nullo o coincidente con asse Z, imposto asse orizzontale pił vicino a Near + if ( vtV.IsZero() || vtV.IsZplus() || vtV.IsZminus()) { + Vector3d vtHor( vtNear.x, vtNear.y, 0) ; + if ( vtHor.Normalize( EPS_ZERO)) + return vtHor ; + else + return X_AX ; + } + // caso generico + Vector3d vtHor = vtV ^ Z_AX ; + vtHor.Normalize( EPS_ZERO) ; + return ( vtHor * vtNear >= 0 ? vtHor : -vtHor) ; +} + //---------------------------------------------------------------------------- // Lunghezza del vettore //----------------------------------------------------------------------------