void findRegionCurvature(Part *part);
void groupPartCurvatureRegions(Part *part);
MeshRegion *meshRegionCreate();
void meshRegionDestroy(MeshRegion *region);
int meshRegionPrint(void *node, void *data);
void meshRegionAddFacet(MeshRegion *region, Facet *fptr);
void meshRegionRemoveFacet(MeshRegion *region, Facet *fptr);

void mergeMeshRegions(MeshRegion *src, MeshRegion *dest);
int meshRegionFindAdjRegions(void *node, void *data);
void meshRegionFindBbox(MeshRegion *region);
void groupObjRegions(ModelObject *obj);
void partCountQuant(Part *part, int *partQuantSum, int *partVertSum);
int countRegions(LinkedList *node);
void groupQuantRegions(Part *part);
void regionFindMaxNormalChange(MeshRegion *region);
float findMaxNChange(LinkedList *nodes, Facet *refFacet, ModelObject *obj);

