face.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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 FACE__H
  25. #define FACE__H
  26. #include <stdio.h>
  27. #include <stdlib.h>
  28. #include <math.h>
  29. #include "edge.h"
  30. typedef struct
  31. {
  32. int ve1;
  33. int ve2;
  34. int ve3;
  35. } vf_face;
  36. typedef struct
  37. {
  38. int ed1;
  39. int ed2;
  40. int ed3;
  41. } vef_face;
  42. /**
  43. Affichage d'une face
  44. @param f face à afficher
  45. @return aucun
  46. */
  47. void vf_face_display (
  48. const vf_face * const f);
  49. /**
  50. Inversion de l'orientation de la face
  51. @param f pointeur sur la face à inverser
  52. @return aucun
  53. */
  54. void vf_face_reverse (
  55. vf_face * f);
  56. /**
  57. Test de l'appartenance d'un sommet à une face
  58. @param f pointeur sur la face
  59. @param numvertex numero du sommet
  60. @return 1 si le sommet appartient à la face, 0 sinon
  61. */
  62. int vf_face_contains (
  63. const vf_face * const f,
  64. int numvertex);
  65. /**
  66. Affichage d'une face
  67. @param f face à afficher
  68. @return aucun
  69. */
  70. void vef_face_display (
  71. const vef_face * const f);
  72. /**
  73. Inversion de l'orientation de la face
  74. @param f pointeur sur la face à inverser
  75. @return aucun
  76. */
  77. void vef_face_reverse (
  78. vef_face * f);
  79. /**
  80. Donne les trois points formant la face
  81. @param f la face dont on veut les trois sommets
  82. @param list list des aretes
  83. @param ve1 index du premier sommet
  84. @param ve2 index du second sommet
  85. @param ve3 index du troisième sommet
  86. @return aucun
  87. */
  88. void vef_face_get_vertices (
  89. const vef_face * const f,
  90. const vef_edge * const list,
  91. int * ve1,
  92. int * ve2,
  93. int * ve3);
  94. /**
  95. Test de l'appartenance d'une arete à une face
  96. @param f pointeur sur la face
  97. @param numvertex numero de l'arete
  98. @return 1 si l'arete appartient à la face, 0 sinon
  99. */
  100. int vef_face_contains (
  101. const vef_face * const f,
  102. int numedge);
  103. #endif