subdivision.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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 SUBDIVISION__H
  25. #define SUBDIVISION__H
  26. #include "util.h"
  27. #include "model.h"
  28. #include "edge.h"
  29. #include "hashtable.h"
  30. /**
  31. Subdivision d'un modèle avec la méthode de Loop
  32. @param m pointeur sur le modèle à subdiviser
  33. @param nbiter nombre d'itération de la subdivision
  34. @return aucun
  35. **/
  36. void a2ri_vf_loop (
  37. vf_model * m,
  38. int nbiter);
  39. /**
  40. Subdivision d'un modele ou coupant les triangles en 6 triangles avec un point central
  41. @param m pointeur sur le modele a subdiviser
  42. @param nbiter nom c'iteration de la subdivision
  43. @param aucun
  44. **/
  45. void a2ri_vf_6_subdivision (
  46. vf_model * m,
  47. int nbiter);
  48. /**
  49. Subdivision d'un modele ou coupant les triangles en 4 triangles
  50. @param m pointeur sur le modele a subdiviser
  51. @param nbiter nom c'iteration de la subdivision
  52. @param aucun
  53. **/
  54. void a2ri_vf_4_subdivision (
  55. vf_model * m,
  56. int nbiter);
  57. /**
  58. Subdivision d'un modele par un plan
  59. @param m pointeur sur le modele a subdiviser
  60. @param A premier point définissant le plan
  61. @param B second point définissant le plan
  62. @param C troisième point définissant le plan
  63. @param aucun
  64. **/
  65. void
  66. a2ri_vf_subdivision_by_plane (
  67. vf_model * m,
  68. point3d * A,
  69. point3d * B,
  70. point3d * C);
  71. /**
  72. Subdivision d'un modele ou coupant les triangles en 6 triangles avec un point central
  73. @param m pointeur sur le modele a subdiviser
  74. @param nbiter nom c'iteration de la subdivision
  75. @param aucun
  76. **/
  77. void a2ri_vf_general_subdivision (
  78. vf_model * m,
  79. hashtable * table);
  80. /**
  81. Subdivision d'un modèle avec la méthode de Loop
  82. @param m pointeur sur le modèle à subdiviser
  83. @param nbiter nombre d'itération de la subdivision
  84. @return aucun
  85. **/
  86. void a2ri_vef_loop (
  87. vef_model * m,
  88. int nbiter);
  89. /**
  90. Subdivision d'un modèle avec la méthode de Butterfly
  91. @param m pointeur sur le modèle à subdiviser
  92. @param nbiter nombre d'itération de la subdivision
  93. @param tension paramètre de tension
  94. @return aucun
  95. **/
  96. void a2ri_vef_butterfly (
  97. vef_model * m,
  98. int nbiter,
  99. double tension);
  100. #endif