57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
// 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
|