Revision ad8e9d4f15917a78050e26fb7a846e17f90636e6 authored by Merve Asiler on 03 July 2024, 20:45:15 UTC, committed by GitHub on 03 July 2024, 20:45:15 UTC
1 parent ba0ff13
Mesh.h
// @author Merve Asiler
#pragma once
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <stdio.h>
#include "BasicMeshElements.h"
class Mesh
{
private:
vector< Vertex > verts;
vector< Triangle > tris;
vector< Edge > edges;
public:
// variables for teaser figure:
vector<vector<double>> aabb_corners;
Mesh() {};
~Mesh();
Mesh(const Mesh& mesh);
void loadObj(const char* name);
void loadOff(const char* name);
void writeOff(string offFileName);
// methods to construct mesh
void addTriangle(int v1, int v2, int v3);
void addEdge(int v1, int v2);
void addVertex(double x, double y, double z);
int makeVertsNeighbor(int v1i, int v2i);
// methods to reach mesh elements
int getNumOfVerts() const { return verts.size(); };
int getNumOfTris() const { return tris.size(); };
int getNumOfEdges() const { return edges.size(); };
Vertex getVertex(int i) const { return verts[i]; };
Triangle getTriangle(int i) const { return tris[i]; };
Edge getEdge(int i) const { return edges[i]; };
const vector<Vertex>& getAllVerts() const { return verts; };
const vector<Triangle>& getAllTris() const { return tris; };
const vector<Edge>& getAllEdges() const { return edges; };
// methods to compute mesh features
bool isManifold();
void addVertexColor(int id, double color[3]);
void changeVertexCoords(int id, double coords[3]);
void computeTrisAngles();
double computeVolume();
void tetrahedralizeSurface();
vector<double> computeCurvaturePerVertex();
void makeConvex();
void removeAbnormalTris();
void rotate(double angles[3]);
void setKernelAABB(double initialCorner[3], double finalCorner[3]);
};
#pragma once
Computing file changes ...