78 lines
3.7 KiB
C++
Executable File
78 lines
3.7 KiB
C++
Executable File
/****************************************************************************
|
|
* JMeshExt *
|
|
* *
|
|
* Consiglio Nazionale delle Ricerche *
|
|
* Istituto di Matematica Applicata e Tecnologie Informatiche *
|
|
* Sezione di Genova *
|
|
* IMATI-GE / CNR *
|
|
* *
|
|
* Authors: Marco Attene *
|
|
* *
|
|
* Copyright(C) 2006: IMATI-GE / CNR *
|
|
* *
|
|
* All rights reserved. *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) *
|
|
* for more details. *
|
|
* *
|
|
****************************************************************************/
|
|
|
|
#ifndef _EXTTRIMESH_H
|
|
#define _EXTTRIMESH_H
|
|
|
|
#include "jmesh.h"
|
|
|
|
class ExtTriMesh : public Triangulation
|
|
{
|
|
public:
|
|
|
|
// Constructors
|
|
|
|
ExtTriMesh() : Triangulation() {};
|
|
ExtTriMesh(const char *s) : Triangulation(s) {};
|
|
ExtTriMesh(const Triangulation *t) : Triangulation(t) {};
|
|
ExtTriMesh(const Triangle *t, const bool keep_ref =false) : Triangulation(t, keep_ref) {};
|
|
|
|
Edge *joinBoundaryLoops(bool =0, bool =1, bool =1); // (in "ALGORITHMS/holeFilling.C")
|
|
Edge *joinBoundaryLoops(Vertex *, Vertex *, bool =0, bool =1, bool =1); // (in "ALGORITHMS/holeFilling.C")
|
|
int fillSmallBoundaries(int, bool =0, bool =0); // (in "ALGORITHMS/holeFilling.C")
|
|
int TriangulateHole(Edge *); // (in "ALGORITHMS/holeFilling.C")
|
|
void FillHole(Edge *, bool =0); // (in "ALGORITHMS/holeFilling.C")
|
|
int refineSelectedHolePatches(Triangle * =NULL); // (in "ALGORITHMS/holeFilling.C")
|
|
void fairSelection(Triangle * =NULL); // (in "ALGORITHMS/holeFilling.C")
|
|
|
|
// Misc Algorithms (Implemented in "ALGORITHMS/*.C")
|
|
|
|
void loopSubdivision(int);
|
|
void modbutSubdivision();
|
|
void sqrt3Subdivision();
|
|
int laplacianSmooth(int =1, double =1.0);
|
|
int uniformRemesh(int, int =0);
|
|
int spherize(int);
|
|
int featureRecover(double, double);
|
|
int simplify(int, int =0, int =0, int =0);
|
|
int multiplechoice_simplify(int, int =0, int =8, int =0);
|
|
void mc_resample(int, int =0, int =0);
|
|
int epsilonSample(double, int =0);
|
|
|
|
int selectIntersectingTriangles(UINT16 tri_per_cell=100);
|
|
|
|
void tagPlanarRegionsBoundaries(double max_distance);
|
|
|
|
//! Normalize all the shells and distribute them on a virtual sphere. O(N).
|
|
void placeShellsOnVirtualSphere();
|
|
Edge *flatten(Edge * =NULL);
|
|
|
|
bool plumberSelect(Vertex *start, double radius);
|
|
};
|
|
|
|
#endif // _EXTTRIMESH_H
|