topology.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*************************************/
  2. /* Auteur : Rémi Synave */
  3. /* Date de création : 01/03/07 */
  4. /* Date de modification : 15/03/15 */
  5. /* Version : 0.4 */
  6. /*************************************/
  7. /***************************************************************************/
  8. /* This file is part of a2ri. */
  9. /* */
  10. /* a2ri is free software: you can redistribute it and/or modify it */
  11. /* under the terms of the GNU Lesser General Public License as published */
  12. /* by the Free Software Foundation, either version 3 of the License, or */
  13. /* (at your option) any later version. */
  14. /* */
  15. /* a2ri is distributed in the hope that it will be useful, */
  16. /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
  17. /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
  18. /* GNU Lesser General Public License for more details. */
  19. /* */
  20. /* You should have received a copy of the GNU Lesser General Public */
  21. /* License along with a2ri. */
  22. /* If not, see <http://www.gnu.org/licenses/>. */
  23. /***************************************************************************/
  24. #ifndef TOPOLOGY__H
  25. #define TOPOLOGY__H
  26. #define BYVERTEX 0
  27. #define BYEDGE 1
  28. #include "model.h"
  29. #include "util.h"
  30. #include "hashtable.h"
  31. /**
  32. Recherche du voisinage pour une liste de faces et à une profondeur donnée
  33. @param type BYVERTEX ou BYEDGE <BR> BYVERTEX : recherche du voisinage par sommet <BR> BYEDGE : recherche du voisinage par arete.
  34. @param m le modèle
  35. @param faces tableau contenant les numéros des faces de départ
  36. @param nbfaces taille du tableau
  37. @param list pointeur sur le tableau des faces contenu dans le voisinage
  38. @param size pointeur sur le nombre de faces dans le voisinage
  39. @param depth profondeur du voisinage
  40. @return aucun
  41. */
  42. void a2ri_vf_star (
  43. int type,
  44. const vf_model * const m,
  45. const int * const faces,
  46. int nbfaces,
  47. int **list,
  48. int *size,
  49. int depth);
  50. /**
  51. Calcul du nombre de trous/nombre de limites dans le modèle
  52. @param m le modèle
  53. @return nombre de trous/limites
  54. */
  55. int a2ri_vf_nb_hole (
  56. const vf_model * const m);
  57. /**
  58. Calcul du nombre de trous/nombre de limites dans le modèle
  59. @param m le modèle
  60. @return nombre de trous/limites
  61. */
  62. int a2ri_vef_nb_hole (
  63. const vef_model * const m);
  64. /**
  65. Calcul du nombre de parties connexes contenu dans le modèle
  66. @param m le modèle
  67. @param list tableau d'entier représentant les faces du modèle et contenant le numéro de la partie à laquelle la face appartient.
  68. @return nombre de parties connexes
  69. */
  70. int a2ri_vf_nb_connected_part (
  71. const vf_model * const m,
  72. int **list);
  73. /**
  74. Calcul du nombre de parties connexes contenu dans le modèle
  75. @param m le modèle
  76. @param list tableau d'entier représentant les faces du modèle et contenant le numéro de la partie à laquelle la face appartient.
  77. @return nombre de parties connexes
  78. */
  79. int a2ri_vef_nb_connected_part (
  80. const vef_model * const m,
  81. int **list);
  82. /**
  83. Cherche un trou/cycle dans le maillage contenant les deux sommets
  84. @param m le modele
  85. @param ve1 premier sommet qui doit etre contenu dans le cycle
  86. @param ve2 second sommet qui doit etre contenu dans le cycle
  87. @param list liste des sommets formant le cycle
  88. @param size taille de la liste
  89. **/
  90. void a2ri_vf_search_hole_contains (
  91. const vf_model * const m,
  92. int ve1,
  93. int ve2,
  94. int ** list,
  95. int * size);
  96. #endif