// ErrorEstimator.h: ErrorEstimator クラスのインターフェイス // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_ERRORESTIMATOR_H__5BEF3606_E446_4FD7_8124_CB0AC7C0F133__INCLUDED_) #define AFX_ERRORESTIMATOR_H__5BEF3606_E446_4FD7_8124_CB0AC7C0F133__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "MeshData.h" #include "Node.h" class ErrorEstimator { public: MeshData* mesh; float (*original)[3]; float (*noisy)[3]; float (*original_f)[3]; float (*noisy_f)[3]; float *v_error, *f_error; public: void meanCurvatureNormalOriginal(int i, double Hn[3]); int searchNearestVertex(int i, int *id, int R); double estimateHnError(double& max); void faceNormalOriginal(float n[3], int i); void faceCenterOriginal(float c[3], int i); double faceAreaOriginal(int i); void normalNearestTriangle(float n[3], int i, float p[], float (*vertex)[3], int *id, int R); double dist2ToNearestTriangle(int i, float p[], float (*vertex)[3], int *id, int R); double dist2ToTriangle(float A[], float B[], float C[], float P[]); double dist2ToSegment(float A[3], float B[3], float P[3]); double estimateFaceError(double &max); void normalNearestFace(float n[3], int i, int *id, int R); double dist2ToNearestVertex(int i, int* id, int R); double estimateCorelationVertex(); int searchNearestVertex(int i); void setNoisy(); double dist2ToNearestVertex(int i); double estimateVertexError(double &max); void updateOriginal(); void setMeshData(MeshData* mesh); ErrorEstimator(); virtual ~ErrorEstimator(); }; #endif // !defined(AFX_ERRORESTIMATOR_H__5BEF3606_E446_4FD7_8124_CB0AC7C0F133__INCLUDED_)