![]() |
ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
|
Compressed normal vectors handler. More...
#include <ecvNormalVectors.h>
Public Types | |
| enum | Orientation { PLUS_X = 0 , MINUS_X = 1 , PLUS_Y = 2 , MINUS_Y = 3 , PLUS_Z = 4 , MINUS_Z = 5 , PLUS_BARYCENTER , MINUS_BARYCENTER = 7 , PLUS_ORIGIN = 8 , MINUS_ORIGIN = 9 , PREVIOUS = 10 , PLUS_SENSOR_ORIGIN , MINUS_SENSOR_ORIGIN , UNDEFINED = 255 } |
| 'Default' orientations More... | |
Public Member Functions | |
| const CCVector3 & | getNormal (unsigned normIndex) const |
| Returns the precomputed normal corresponding to a given compressed index. More... | |
| CCVector3 & | getNormal (unsigned normIndex) |
| const std::vector< CCVector3 > & | getNormals () const |
| std::vector< CCVector3 > & | getNormals () |
| virtual | ~ccNormalVectors () |
| Default destructor. More... | |
| bool | enableNormalHSVColorsArray () |
| Allocates normal HSV colors array. More... | |
| const ecvColor::Rgb & | getNormalHSVColor (unsigned index) const |
| Returns the HSV color equivalent to a given compressed normal index. More... | |
| const std::vector< ecvColor::Rgb > & | getNormalHSVColorArray () const |
| Returns the HSV color array. More... | |
Static Public Member Functions | |
| static ccNormalVectors * | GetUniqueInstance () |
| Returns unique instance. More... | |
| static void | ReleaseUniqueInstance () |
| Releases unique instance. More... | |
| static unsigned | GetNumberOfVectors () |
| Returns the number of compressed normal vectors. More... | |
| static const CCVector3 & | GetNormal (unsigned normIndex) |
| Static access to ccNormalVectors::getNormal. More... | |
| static CCVector3 & | GetNormalPtr (unsigned normIndex) |
| static const std::vector< CCVector3 > & | GetNormals () |
| static std::vector< CCVector3 > & | GetNormalsPtr () |
| static CompressedNormType | GetNormIndex (const PointCoordinateType N[]) |
| Returns the compressed index corresponding to a normal vector. More... | |
| static CompressedNormType | GetNormIndex (const CCVector3 &N) |
| Returns the compressed index corresponding to a normal vector (shortcut) More... | |
| static bool | ComputeCloudNormals (ccGenericPointCloud *cloud, NormsIndexesTableType &theNormsCodes, CV_LOCAL_MODEL_TYPES localModel, PointCoordinateType localRadius, Orientation preferredOrientation=UNDEFINED, cloudViewer::GenericProgressCallback *progressCb=nullptr, cloudViewer::DgmOctree *inputOctree=nullptr) |
| Computes normal at each point of a given cloud. More... | |
| static PointCoordinateType | GuessNaiveRadius (ccGenericPointCloud *cloud) |
| static PointCoordinateType | GuessBestRadius (ccGenericPointCloud *cloud, cloudViewer::DgmOctree *cloudOctree=nullptr, cloudViewer::GenericProgressCallback *progressCb=nullptr) |
| static bool | UpdateNormalOrientations (ccGenericPointCloud *theCloud, NormsIndexesTableType &theNormsCodes, Orientation preferredOrientation) |
| Updates normals orientation based on a preferred orientation. More... | |
| static void | ConvertNormalToStrikeAndDip (const CCVector3 &N, PointCoordinateType &strike_deg, PointCoordinateType &dip_deg) |
| static void | ConvertNormalToDipAndDipDir (const CCVector3 &N, PointCoordinateType &dip_deg, PointCoordinateType &dipDir_deg) |
| Converts a normal vector to geological 'dip direction & dip' parameters. More... | |
| static CCVector3 | ConvertDipAndDipDirToNormal (PointCoordinateType dip_deg, PointCoordinateType dipDir_deg, bool upward=true) |
| static QString | ConvertStrikeAndDipToString (double &strike_deg, double &dip_deg) |
| static QString | ConvertDipAndDipDirToString (PointCoordinateType dip_deg, PointCoordinateType dipDir_deg) |
| Converts geological 'dip direction & dip' parameters to a string. More... | |
| static void | ConvertNormalToHSV (const CCVector3 &N, float &H, float &S, float &V) |
| Converts a normal vector to HSV color space. More... | |
| static ecvColor::Rgb | ConvertNormalToRGB (const CCVector3 &N) |
| Converts a normal vector to RGB color space. More... | |
| static bool | ComputeNormalWithLS (cloudViewer::GenericIndexedCloudPersist *pointAndNeighbors, CCVector3 &N) |
| Helper: computes the normal (with best LS fit) More... | |
| static bool | ComputeNormalWithTri (cloudViewer::GenericIndexedCloudPersist *pointAndNeighbors, CCVector3 &N) |
| Helper: computes the normal (with Delaunay 2.5D) More... | |
| static bool | ComputeNormalWithQuadric (cloudViewer::GenericIndexedCloudPersist *points, const CCVector3 &P, CCVector3 &N) |
| Helper: computes the normal (with Delaunay 2.5D) More... | |
Protected Member Functions | |
| ccNormalVectors () | |
| Default constructor. More... | |
| bool | init () |
| Inits internal structures. More... | |
Static Protected Member Functions | |
| static bool | ComputeNormsAtLevelWithQuadric (const cloudViewer::DgmOctree::octreeCell &cell, void **additionalParameters, cloudViewer::NormalizedProgress *nProgress=nullptr) |
| Cellular method for octree-based normal computation. More... | |
| static bool | ComputeNormsAtLevelWithLS (const cloudViewer::DgmOctree::octreeCell &cell, void **additionalParameters, cloudViewer::NormalizedProgress *nProgress=nullptr) |
| Cellular method for octree-based normal computation. More... | |
| static bool | ComputeNormsAtLevelWithTri (const cloudViewer::DgmOctree::octreeCell &cell, void **additionalParameters, cloudViewer::NormalizedProgress *nProgress=nullptr) |
| Cellular method for octree-based normal computation. More... | |
Protected Attributes | |
| std::vector< CCVector3 > | m_theNormalVectors |
| Compressed normal vectors. More... | |
| std::vector< ecvColor::Rgb > | m_theNormalHSVColors |
| 'HSV' colors corresponding to each compressed normal index More... | |
Compressed normal vectors handler.
Definition at line 20 of file ecvNormalVectors.h.
'Default' orientations
Definition at line 70 of file ecvNormalVectors.h.
|
virtual |
Default destructor.
|
protected |
Default constructor.
Shouldn't be called directly. Use 'GetUniqueInstance' instead.
|
static |
Computes normal at each point of a given cloud.
| cloud | point cloud on which to process the normals. |
| theNormsCodes | array in which the normals indexes are stored |
| localModel | which kind of model to use for the computation (LS = plane, QUADRIC = quadratic Height Function, TRI = triangulation) |
| localRadius | local neighborhood radius (not necessary for TRI) |
| preferredOrientation | specifies a preferred orientation for normals (optional) |
| progressCb | progress notification (optional) |
| inputOctree | inputOctree input cloud octree (optional). |
|
static |
Helper: computes the normal (with best LS fit)
|
static |
Helper: computes the normal (with Delaunay 2.5D)
The normal is computed at the first point (assuming the others are its neighbors).
|
static |
Helper: computes the normal (with Delaunay 2.5D)
The normal is computed at the first point (assuming the others are its neighbors).
|
staticprotected |
Cellular method for octree-based normal computation.
|
staticprotected |
Cellular method for octree-based normal computation.
|
staticprotected |
Cellular method for octree-based normal computation.
|
static |
Converts a couple of geological 'dip direction & dip' parameters to a unit normal vector
| [in] | dip_deg | value (in degrees) |
| [in] | dipDir_deg | dip direction value(in degrees) |
| [in] | upward | whether the output normal vector should point towards Z+ (true) or Z- (false) |
Referenced by ccCompass::importFoliations(), ccCompassImport::importFoliations(), ccApplyTransformationDlg::initFromDipAndDipDir(), ccPlaneEditDlg::onDipDirChanged(), and ccPlaneEditDlg::updatePlane().
|
static |
Converts geological 'dip direction & dip' parameters to a string.
| [in] | dip_deg | dip angle value (in degrees) |
| [in] | dipDir_deg | dip direction value (in degrees) |
Referenced by StereogramDialog::init(), and CommandMatchBestFitPlane::process().
|
static |
Converts a normal vector to geological 'dip direction & dip' parameters.
See http://en.wikipedia.org/wiki/Strike_and_dip The dip direction is the azimuth of the direction (in [0,360[). The dip is always in [0,90].
| [in] | N | normal (should be normalized!) |
| [out] | dip_deg | value (in degrees) |
| [out] | dipDir_deg | dip direction value (in degrees) |
Referenced by ccFitPlane::ccFitPlane(), masc::NeighborhoodFeature::computeValue(), qFacets::createFacets(), StereogramDialog::exportCurrentSelection(), ccPropertiesTreeDelegate::fillWithPlanarEntity(), GetFacetMetaData(), FacetsClassifier::GetFamilyIndexes(), StereogramWidget::init(), ccPlaneEditDlg::onNormalChanged(), NormDipAndDipDirFieldWrapper::pointValue(), CommandMatchBestFitPlane::process(), ccFitPlane::updateAttributes(), and StereogramDialog::updateFacetsFilter().
|
static |
Converts a normal vector to HSV color space.
Uses 'strike & dip' parameters (H=strike, S=dip, V=constant)
| [in] | N | normal (should be normalized!) |
| [out] | H | hue [0;360[ |
| [out] | S | saturation [0;1] |
| [out] | V | value [0;1] |
|
static |
Converts a normal vector to RGB color space.
Uses 'ConvertNormalToHSV' then converts HSV to RGB.
| [in] | N | normal (should be normalized!) |
|
static |
Converts a normal vector to geological 'strike & dip' parameters (N[dip]°E - [strike]°)
| [in] | N | normal (should be normalized!) |
| [out] | strike_deg | strike value (in degrees) |
| [out] | dip_deg | dip value (in degrees) |
|
static |
Converts geological 'strike & dip' parameters (N[dip]°E - [strike]°) to a string
| [in] | strike_deg | strike value (in degrees) |
| [in] | dip_deg | dip value (in degrees) |
| bool ccNormalVectors::enableNormalHSVColorsArray | ( | ) |
Allocates normal HSV colors array.
Mandatory for HSV color related methods (getNormalHSVColor, etc.)
|
inlinestatic |
Static access to ccNormalVectors::getNormal.
Definition at line 37 of file ecvNormalVectors.h.
Referenced by ComputeM3C2DistForPoint(), define_ccNormalVectors(), ccTrace::fitPlane(), qM3C2Normals::MakeNormalsHorizontal(), OrientPointNormalWithCloud(), and ToFbxMesh().
|
inline |
Definition at line 54 of file ecvNormalVectors.h.
|
inline |
Returns the precomputed normal corresponding to a given compressed index.
Definition at line 51 of file ecvNormalVectors.h.
| const ecvColor::Rgb& ccNormalVectors::getNormalHSVColor | ( | unsigned | index | ) | const |
Returns the HSV color equivalent to a given compressed normal index.
|
inline |
Returns the HSV color array.
Definition at line 224 of file ecvNormalVectors.h.
|
inlinestatic |
Definition at line 40 of file ecvNormalVectors.h.
|
inlinestatic |
Definition at line 43 of file ecvNormalVectors.h.
|
inline |
Definition at line 60 of file ecvNormalVectors.h.
|
inline |
Definition at line 57 of file ecvNormalVectors.h.
|
inlinestatic |
Definition at line 46 of file ecvNormalVectors.h.
|
inlinestatic |
Returns the compressed index corresponding to a normal vector (shortcut)
Definition at line 65 of file ecvNormalVectors.h.
References Tuple3Tpl< Type >::u.
|
static |
Returns the compressed index corresponding to a normal vector.
Referenced by ComputeCorePointNormal(), define_ccNormalVectors(), FromFbxMesh(), qM3C2Normals::MakeNormalsHorizontal(), and OrientPointNormalWithCloud().
|
inlinestatic |
Returns the number of compressed normal vectors.
Definition at line 31 of file ecvNormalVectors.h.
Referenced by define_ccNormalVectors().
|
static |
Returns unique instance.
Referenced by define_ccNormalVectors(), and InitEnvironment().
|
static |
Tries to guess the best 'local radius' for normals computation (see ComputeCloudNormals)
| cloud | point cloud on which to process the normals. |
| cloudOctree | input cloud octree (optional) |
| progressCb | progress notification (optional) |
Referenced by ccNormalComputationDlg::autoEstimateRadius(), and CommandOctreeNormal::process().
|
static |
Tries to guess a very naive 'local radius' for normals computation (see ComputeCloudNormals)
| cloud | point cloud on which to process the normals. |
Referenced by ccEntityAction::computeNormals().
|
protected |
Inits internal structures.
|
static |
Releases unique instance.
Call to this method is now optional.
Referenced by define_ccNormalVectors().
|
static |
Updates normals orientation based on a preferred orientation.
| theCloud | point cloud on which to process the normals. |
| theNormsCodes | array in which the normals indexes are stored |
| preferredOrientation | specifies a preferred orientation for normals |
Referenced by qM3C2Process::Compute().
|
protected |
'HSV' colors corresponding to each compressed normal index
In fact, HSV color has already been converted to RGB here for faster display.
Definition at line 266 of file ecvNormalVectors.h.
|
protected |
Compressed normal vectors.
Definition at line 260 of file ecvNormalVectors.h.