overlap.tex 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. \documentclass[a4paper,12pt]{article}
  2. \usepackage[french]{babel}
  3. \usepackage[T1]{fontenc}
  4. \usepackage[latin1]{inputenc}
  5. %\usepackage{amsmath}
  6. \author{Rémi Synave, Stefka Gueorguieva, Pascal Desbarats}
  7. \title{Manuel de la bibliothèque OVERLAP}
  8. \date{}
  9. \begin{document}
  10. \maketitle
  11. \section{Utilisation}
  12. Bibliothèque où sont implémentées les fonctions permettant de vérifier l'intersection de Bounding Box ou de calculer le taux de recouvrement de deux maillages.
  13. \section{Fonctions}
  14. \textbullet \texttt{int intersection\_axis\_aligned\_bounding\_box\_with\_axis\_aligned\_bounding\_box\_list(point3d min, point3d max, point3d *listmin, point3d *listmax, int size)}\\
  15. Test d'intersection entre une Axis Aligned Bounding Box (AABB), \texttt{min} et \texttt{max}, et un ensemble d'AABB, \texttt{listmin} et \texttt{listmax}.\\
  16. ~\\
  17. \underline{Paramètres et type de retour :}\\
  18. \texttt{min} : point minimal de la boundingbox à tester (xmin,ymin,zmin).\\
  19. \texttt{max} : point maximal de la boundingbox à tester (xmax,ymax,zmax).\\
  20. \texttt{listmin} : liste de points minimaux des boundingbox (xmin,ymin,zmin).\\
  21. \texttt{listmax} : liste de points maximaux des boundingbox (xmax,ymax,zmax).\\
  22. \texttt{size} : nombre de boundingbox dans la liste.\\
  23. \texttt{retour} : 1 s'il y a instersection, 0 sinon.\\
  24. \textbullet \texttt{int intersection\_bounding\_ball\_with\_bounding\_ball\_list(point3d c, double rayon, point3d *listcentre, double *listrayon, int nbelt, double alpha)}\\
  25. Test d'intersection d'une bounding ball définie par son centre \texttt{c} et son rayon \texttt{rayon} avec une liste de bounding ball définie par leur centre \texttt{listcentre} et leur rayon \texttt{listrayon}.\\
  26. \textbf{Formule :}\\
  27. Il y a intersection entre la bounding ball de centre $c1$ et de rayon $r1$ et une bounding ball de centre $c2$ et de rayon $r2$ si : $||c2-c1||<||r2-r1|| \times alpha$.\\
  28. ~\\
  29. \underline{Paramètres et type de retour :}\\
  30. \texttt{c} : centre de la bounding sphere à tester.\\
  31. \texttt{rayon} : rayon de la bounding sphere à tester.\\
  32. \texttt{listcentre} : liste de centre des bounding sphere.\\
  33. \texttt{listrayon} : liste des rayons des bounding sphere.\\
  34. \texttt{nbelt} : taille de la liste de bounding sphere.\\
  35. \texttt{alpha} : paramètre de "rapprochement" (voir formule).\\
  36. \texttt{retour} : 1 s'il y a instersection, 0 sinon.\\
  37. \textbullet \texttt{double vf\_model\_bounding\_ball\_ritter\_compute\_overlap(vf\_model *base, vf\_model *m)}\\
  38. Calcul du taux de recouvrement de deux maillages en utilisant les bounding ball de Ritter.\\
  39. \textbf{Algorithme :}\\
  40. 1) Calculer les bounding ball de Ritter de toutes les faces des modèles \texttt{base} et \texttt{m}.\\
  41. 2) Pour toutes les faces de \texttt{m}, si la bounding ball de cette face s'intersecte avec l'une des bounding ball des faces de \texttt{base} alors marquer la face de \texttt{m}.\\
  42. 3) Pour toutes les faces marquées de \texttt{m}, ajouter les sommets sans redondance à une liste \texttt{L}.\\
  43. 4) Le taux de recouvrement = $\frac {||L||} {||m||} $.\\
  44. où ||\texttt{L}|| est le nombre d'éléments de la liste \texttt{L} et ||\texttt{m}| est le nombre de sommets du maillage \texttt{m}.\\
  45. ~\\
  46. \underline{Paramètres et type de retour :}\\
  47. \texttt{base} : premier modele.\\
  48. \texttt{m} : second modele.\\
  49. \texttt{retour} : taux de recouvrement de \texttt{m} sur \texttt{base}.\\
  50. \textbullet \texttt{double vf\_model\_axis\_aligned\_bounding\_box\_compute\_overlap(vf\_model *base, vf\_model *m)}\\
  51. Calcul du taux de recouvrement de deux maillages en utilisant les AABB.\\
  52. \textbf{Algorithme :}\\
  53. 1) Calculer les AABB de toutes les faces des modèles \texttt{base} et \texttt{m}.\\
  54. 2) Pour toutes les faces de \texttt{m}, si l'AABB de cette face s'intersecte avec l'une des AABB des faces de \texttt{base} alors marquer la face de \texttt{m}.\\
  55. 3) Pour toutes les faces marquées de \texttt{m}, ajouter les sommets sans redondance à une liste \texttt{L}.\\
  56. 4) Le taux de recouvrement = $\frac {||L||} {||m||} $.\\
  57. où ||\texttt{L}|| est le nombre d'éléments de la liste \texttt{L} et ||\texttt{m}| est le nombre de sommets du maillage \texttt{m}.\\
  58. ~\\
  59. \underline{Paramètres et type de retour :}\\
  60. \texttt{base} : premier modele.\\
  61. \texttt{m} : second modele.\\
  62. \texttt{retour} : taux de recouvrement de \texttt{m} sur \texttt{base}.\\
  63. \textbullet \texttt{void vf\_model\_bounding\_ball\_ritter\_find\_face\_overlapping(vf\_model *base, vf\_model *m, int **list, int *size, double alpha)}\\
  64. Liste les faces de \texttt{m} s'intersectant avec les face de \texttt{base} en utilisant les bounding ball de Ritter. L'indes des faces est ajoutées à la liste \texttt{list}.\\
  65. \textbf{Algorithme :}\\
  66. 1) Calculer les bounding ball de Ritter de toutes les faces des modèles \texttt{base} et \texttt{m}.\\
  67. 2) Pour toutes les faces de \texttt{m}, si la bounding ball de cette face s'intersecte avec l'une des bounding ball des faces de \texttt{base} alors ajouter la face à la liste \texttt{list}.\\
  68. ~\\
  69. \underline{Paramètres et type de retour :}\\
  70. \texttt{base} : premier modele.\\
  71. \texttt{m} : second modele.\\
  72. \texttt{list} : liste des numéros des faces de \texttt{m} s'intersectant avec \texttt{base}.\\
  73. \texttt{size} : taille de la liste.\\
  74. \texttt{alpha} : paramètre de rapprochement (voir formule de la fonction intersection\_bounding\_ball\_with\_bounding\_ball\_list).\\
  75. \texttt{retour} : aucun.\\
  76. \textbullet \texttt{void vf\_model\_axis\_aligned\_bounding\_box\_find\_face\_overlapping(vf\_model *base, vf\_model *m, int **listface, int *size)}\\
  77. Liste les faces de \texttt{m} s'intersectant avec les face de \texttt{base} en utilisant les AABB. L'indes des faces est ajoutées à la liste \texttt{list}.\\
  78. \textbf{Algorithme :}\\
  79. 1) Calculer les AABB de toutes les faces des modèles \texttt{base} et \texttt{m}.\\
  80. 2) Pour toutes les faces de \texttt{m}, si l'AABB de cette face s'intersecte avec l'une des AABB des faces de \texttt{base} alors ajouter la face à la liste \texttt{list}.\\
  81. ~\\
  82. \underline{Paramètres et type de retour :}\\
  83. \texttt{base} : premier modele.\\
  84. \texttt{m} : second modele.\\
  85. \texttt{list} : liste des numéros des faces de \texttt{m} s'intersectant avec \texttt{base}.\\
  86. \texttt{size} : taille de la liste.\\
  87. \texttt{retour} : aucun.\\
  88. \end{document}