summaryrefslogtreecommitdiff
path: root/thirdparty/thekla_atlas/nvmesh/param/ParameterizationQuality.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/thekla_atlas/nvmesh/param/ParameterizationQuality.h')
-rw-r--r--thirdparty/thekla_atlas/nvmesh/param/ParameterizationQuality.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/thirdparty/thekla_atlas/nvmesh/param/ParameterizationQuality.h b/thirdparty/thekla_atlas/nvmesh/param/ParameterizationQuality.h
new file mode 100644
index 0000000000..342e26b889
--- /dev/null
+++ b/thirdparty/thekla_atlas/nvmesh/param/ParameterizationQuality.h
@@ -0,0 +1,56 @@
+// Copyright NVIDIA Corporation 2008 -- Ignacio Castano <icastano@nvidia.com>
+
+#pragma once
+#ifndef NV_MESH_PARAMETERIZATIONQUALITY_H
+#define NV_MESH_PARAMETERIZATIONQUALITY_H
+
+#include <nvmesh/nvmesh.h>
+
+namespace nv
+{
+ class Vector2;
+ class Vector3;
+
+ namespace HalfEdge { class Mesh; }
+
+ // Estimate quality of existing parameterization.
+ NVMESH_CLASS class ParameterizationQuality
+ {
+ public:
+ ParameterizationQuality();
+ ParameterizationQuality(const HalfEdge::Mesh * mesh);
+
+ bool isValid() const;
+
+ float rmsStretchMetric() const;
+ float maxStretchMetric() const;
+
+ float rmsConformalMetric() const;
+ float maxAuthalicMetric() const;
+
+ void operator += (const ParameterizationQuality & pq);
+
+ private:
+
+ void processTriangle(Vector3 p[3], Vector2 t[3]);
+
+ private:
+
+ uint m_totalTriangleCount;
+ uint m_flippedTriangleCount;
+ uint m_zeroAreaTriangleCount;
+
+ float m_parametricArea;
+ float m_geometricArea;
+
+ float m_stretchMetric;
+ float m_maxStretchMetric;
+
+ float m_conformalMetric;
+ float m_authalicMetric;
+
+ };
+
+} // nv namespace
+
+#endif // NV_MESH_PARAMETERIZATIONQUALITY_H