liba2ri  0.2
 All Data Structures
vertex.h
1 /*************************************/
2 /* Auteur : Rémi Synave */
3 /* Date de création : 01/03/07 */
4 /* Date de modification : 08/01/10 */
5 /* Version : 0.2 */
6 /*************************************/
7 
8 /*************************************/
9 /* Auteur : Romain Leguay */
10 /* Nguyen Haiduong */
11 /* Marianne Fichoux */
12 /* Date de modification : 26/05/09 */
13 /* Version : 0.2 */
14 /*************************************/
15 
16 /***************************************************************************/
17 /* This file is part of a2ri. */
18 /* */
19 /* a2ri is free software: you can redistribute it and/or modify it */
20 /* under the terms of the GNU Lesser General Public License as published */
21 /* by the Free Software Foundation, either version 3 of the License, or */
22 /* (at your option) any later version. */
23 /* */
24 /* a2ri is distributed in the hope that it will be useful, */
25 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
26 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
27 /* GNU Lesser General Public License for more details. */
28 /* */
29 /* You should have received a copy of the GNU Lesser General Public */
30 /* License along with a2ri. */
31 /* If not, see <http://www.gnu.org/licenses/>. */
32 /***************************************************************************/
33 
34 
35 
36 #ifndef VERTEX__H
37 #define VERTEX__H
38 
39 #include <stdio.h>
40 #include <math.h>
41 #include "util.h"
42 #include "point.h"
43 #include "vector.h"
44 #include "matrix.h"
45 
46 typedef struct
47 {
48  double x;
49  double y;
50  double z;
51  int *incidentvertices;
52  int nbincidentvertices;
53 } vf_vertex;
54 //structure de données pour les sommets vf_vertex
55 
56 typedef struct
57 {
58  double x;
59  double y;
60  double z;
61  int *sharededges;
62  int nbsharededges;
63 } vef_vertex;
64 
70 void vf_vertex_display (
71  vf_vertex v);
72 
78 void vf_vertex_display_detail (
79  vf_vertex v);
80 
88 void vf_vertex_translate (
89  vf_vertex * v,
90  vector3d delta);
91 
98 void vf_vertex_rotateX_radian (
99  vf_vertex * v,
100  double angle);
101 
108 void vf_vertex_rotateX_degre (
109  vf_vertex * v,
110  double angle);
111 
121 void vf_vertex_rotateX_center_radian (
122  vf_vertex * v,
123  double angle,
124  point3d centre);
125 
135 void vf_vertex_rotateX_center_degre (
136  vf_vertex * v,
137  double angle,
138  point3d centre);
139 
146 void vf_vertex_rotateY_radian (
147  vf_vertex * v,
148  double angle);
149 
156 void vf_vertex_rotateY_degre (
157  vf_vertex * v,
158  double angle);
159 
169 void vf_vertex_rotateY_center_radian (
170  vf_vertex * v,
171  double angle,
172  point3d centre);
173 
183 void vf_vertex_rotateY_center_degre (
184  vf_vertex * v,
185  double angle,
186  point3d centre);
187 
194 void vf_vertex_rotateZ_radian (
195  vf_vertex * v,
196  double angle);
197 
204 void vf_vertex_rotateZ_degre (
205  vf_vertex * v,
206  double angle);
207 
217 void vf_vertex_rotateZ_center_radian (
218  vf_vertex * v,
219  double angle,
220  point3d centre);
221 
231 void vf_vertex_rotateZ_center_degre (
232  vf_vertex * v,
233  double angle,
234  point3d centre);
235 
241 void vf_vertex_free (
242  vf_vertex * v);
243 
249 void vef_vertex_display (
250  vef_vertex v);
251 
259 void vef_vertex_translate (
260  vef_vertex * v,
261  vector3d delta);
262 
269 void vef_vertex_rotateX_radian (
270  vef_vertex * v,
271  double angle);
272 
279 void vef_vertex_rotateX_degre (
280  vef_vertex * v,
281  double angle);
282 
292 void vef_vertex_rotateX_center_radian (
293  vef_vertex * v,
294  double angle,
295  point3d centre);
296 
306 void vef_vertex_rotateX_center_degre (
307  vef_vertex * v,
308  double angle,
309  point3d centre);
310 
317 void vef_vertex_rotateY_radian (
318  vef_vertex * v,
319  double angle);
320 
327 void vef_vertex_rotateY_degre (
328  vef_vertex * v,
329  double angle);
330 
340 void vef_vertex_rotateY_center_radian (
341  vef_vertex * v,
342  double angle,
343  point3d centre);
344 
354 void vef_vertex_rotateY_center_degre (
355  vef_vertex * v,
356  double angle,
357  point3d centre);
358 
365 void vef_vertex_rotateZ_radian (
366  vef_vertex * v,
367  double angle);
368 
375 void vef_vertex_rotateZ_degre (
376  vef_vertex * v,
377  double angle);
378 
388 void vef_vertex_rotateZ_center_radian (
389  vef_vertex * v,
390  double angle,
391  point3d centre);
392 
402 void vef_vertex_rotateZ_center_degre (
403  vef_vertex * v,
404  double angle,
405  point3d centre);
406 
414 void vf_vertex_rotate_axe_radian (
415  vf_vertex * v,
416  gsl_matrix * M);
417 
423 void vef_vertex_free (
424  vef_vertex * v);
425 
426 #endif