/*************************************/
/* Auteur : Rémi Synave */
/* Date de création : 01/03/07 */
/* Date de modification : 15/03/15 */
/* Version : 0.4 */
/*************************************/
/***************************************************************************/
/* This file is part of a2ri. */
/* */
/* a2ri is free software: you can redistribute it and/or modify it */
/* under the terms of the GNU Lesser General Public License as published */
/* by the Free Software Foundation, either version 3 of the License, or */
/* (at your option) any later version. */
/* */
/* a2ri 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 Lesser General Public License for more details. */
/* */
/* You should have received a copy of the GNU Lesser General Public */
/* License along with a2ri. */
/* If not, see . */
/***************************************************************************/
#ifndef TOPOLOGY__H
#define TOPOLOGY__H
#define BYVERTEX 0
#define BYEDGE 1
#include "model.h"
#include "util.h"
#include "hashtable.h"
/**
Recherche du voisinage pour une liste de faces et à une profondeur donnée
@param type BYVERTEX ou BYEDGE
BYVERTEX : recherche du voisinage par sommet
BYEDGE : recherche du voisinage par arete.
@param m le modèle
@param faces tableau contenant les numéros des faces de départ
@param nbfaces taille du tableau
@param list pointeur sur le tableau des faces contenu dans le voisinage
@param size pointeur sur le nombre de faces dans le voisinage
@param depth profondeur du voisinage
@return aucun
*/
void a2ri_vf_star (
int type,
const vf_model * const m,
const int * const faces,
int nbfaces,
int **list,
int *size,
int depth);
/**
Calcul du nombre de trous/nombre de limites dans le modèle
@param m le modèle
@return nombre de trous/limites
*/
int a2ri_vf_nb_hole (
const vf_model * const m);
/**
Calcul du nombre de trous/nombre de limites dans le modèle
@param m le modèle
@return nombre de trous/limites
*/
int a2ri_vef_nb_hole (
const vef_model * const m);
/**
Calcul du nombre de parties connexes contenu dans le modèle
@param m le modèle
@param list tableau d'entier représentant les faces du modèle et contenant le numéro de la partie à laquelle la face appartient.
@return nombre de parties connexes
*/
int a2ri_vf_nb_connected_part (
const vf_model * const m,
int **list);
/**
Calcul du nombre de parties connexes contenu dans le modèle
@param m le modèle
@param list tableau d'entier représentant les faces du modèle et contenant le numéro de la partie à laquelle la face appartient.
@return nombre de parties connexes
*/
int a2ri_vef_nb_connected_part (
const vef_model * const m,
int **list);
/**
Cherche un trou/cycle dans le maillage contenant les deux sommets
@param m le modele
@param ve1 premier sommet qui doit etre contenu dans le cycle
@param ve2 second sommet qui doit etre contenu dans le cycle
@param list liste des sommets formant le cycle
@param size taille de la liste
**/
void a2ri_vf_search_hole_contains (
const vf_model * const m,
int ve1,
int ve2,
int ** list,
int * size);
#endif