mirror of
https://github.com/Ed94/DuctTaped_GL.git
synced 2024-09-20 05:17:33 -07:00
86 lines
1.6 KiB
C++
86 lines
1.6 KiB
C++
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "DGL/DGL.hpp"
|
|
|
|
#include "Cpp_Alias.hpp"
|
|
|
|
|
|
|
|
namespace Execution
|
|
{
|
|
inline namespace LibraryReferences
|
|
{
|
|
using DGL::HE_Model;
|
|
|
|
using OMeshInterface::OMesh_HE;
|
|
}
|
|
|
|
void VerifyMesh(string _filePathForMesh, int genus)
|
|
{
|
|
cout << "Verifying: " << _filePathForMesh << endl;
|
|
|
|
OMesh_HE mesh;
|
|
|
|
mesh.Load(_filePathForMesh);
|
|
|
|
|
|
// Euler Number:
|
|
|
|
int eulerNumLeft = mesh.GetVerticies().size() + mesh.GetFaces().size() - mesh.GetEdges().size();
|
|
|
|
cout << "Left Side Value: " << eulerNumLeft << endl;
|
|
|
|
int eulerNumRight = 2 - 2 * genus;
|
|
|
|
cout << "Right Side Value: " << eulerNumRight << endl << endl;
|
|
|
|
|
|
// Gauss Curvatures:
|
|
|
|
cout << "Calculating Discrete Gauss Curvatures... (Accuracy is up to 0.0001 epsilon on the floats)" << endl;
|
|
|
|
double curvatureByVertex = mesh.GetGuassianCurvature_Discretely();
|
|
|
|
cout << "Curvature by Vertex: " << curvatureByVertex << endl;
|
|
|
|
double curvatureByEuler = 2 * OMeshInterface::PI() * eulerNumRight;
|
|
|
|
cout << "Curvature by Euler : " << curvatureByEuler << endl << endl;
|
|
|
|
double fabsResult = fabs(curvatureByEuler - curvatureByVertex);
|
|
|
|
if (eulerNumRight == eulerNumLeft && fabs(curvatureByEuler - curvatureByVertex) < 0.0001)
|
|
{
|
|
cout << _filePathForMesh << " is valid." << endl << endl;;
|
|
}
|
|
else
|
|
{
|
|
cout << _filePathForMesh << " is invalid." << endl << endl;;
|
|
}
|
|
}
|
|
|
|
|
|
int Execute_Assignment2()
|
|
{
|
|
cout << "Assignment 2: Mesh operations" << endl << endl;
|
|
|
|
VerifyMesh("./Models/bunny.obj", 0);
|
|
|
|
VerifyMesh("./Models/eight.obj", 2);
|
|
|
|
VerifyMesh("./Models/gargoyle.obj", 0);
|
|
|
|
VerifyMesh("./Models/horse.obj", 0);
|
|
|
|
VerifyMesh("./Models/torus.obj", 1);
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|
|
}
|
|
|
|
|
|
|