liba2ri  0.2
 All Data Structures
geometry.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 /* This file is part of a2ri. */
10 /* */
11 /* a2ri is free software: you can redistribute it and/or modify it */
12 /* under the terms of the GNU Lesser General Public License as published */
13 /* by the Free Software Foundation, either version 3 of the License, or */
14 /* (at your option) any later version. */
15 /* */
16 /* a2ri is distributed in the hope that it will be useful, */
17 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
18 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
19 /* GNU Lesser General Public License for more details. */
20 /* */
21 /* You should have received a copy of the GNU Lesser General Public */
22 /* License along with a2ri. */
23 /* If not, see <http://www.gnu.org/licenses/>. */
24 /***************************************************************************/
25 
26 
27 
28 #ifndef GEOMETRY__H
29 #define GEOMETRY__H
30 
31 #include <stdio.h>
32 #include <stdlib.h>
33 #include <math.h>
34 #include <time.h>
35 #include "util.h"
36 #include "point.h"
37 #include "vector.h"
38 #include "matrix.h"
39 
46 double point3d_length (
47  point3d p1,
48  point3d p2);
49 
56 double point3d_square_length (
57  point3d p1,
58  point3d p2);
59 
66 double point2d_length (
67  point2d p1,
68  point2d p2);
69 
94 void equation_plan (
95  point3d * p,
96  int size,
97  double *aeq,
98  double *beq,
99  double *ceq,
100  double *deq);
101 
102 
110 double point3d_area (
111  point3d p1,
112  point3d p2,
113  point3d p3);
114 
124 void base_modification_3d_to_2d (
125  point3d p,
126  point3d origin,
127  vector3d base1,
128  vector3d base2,
129  point2d * newp);
130 
137 void find_second_base_vector (
138  vector3d AB,
139  vector3d AC,
140  vector3d * U);
141 
150 int point_in_triangle (
151  point3d M,
152  point3d A,
153  point3d B,
154  point3d C);
155 
162 double vector3d_angle_radian (
163  vector3d v1,
164  vector3d v2);
165 
172 double vector3d_angle_degre (
173  vector3d v1,
174  vector3d v2);
175 
183 point3d incircle_center (
184  point3d A,
185  point3d B,
186  point3d C);
187 
195 point3d circumcircle_center (
196  point3d A,
197  point3d B,
198  point3d C);
199 
208 point3d circumsphere_center (
209  point3d A,
210  point3d B,
211  point3d C,
212  point3d D);
213 
221 double distance_point_straight_line (
222  point3d M,
223  point3d A,
224  point3d B);
225 
234 double distance_point_plane (
235  point3d M,
236  point3d A,
237  point3d B,
238  point3d C);
239 
248 double distance_point_triangle (
249  point3d M,
250  point3d A,
251  point3d B,
252  point3d C);
253 
264 void sample_triangle (
265  point3d A,
266  point3d B,
267  point3d C,
268  int nb_sample,
269  point3d ** list);
270 
281 int intersection_droite_plan (
282  point3d d1,
283  point3d d2,
284  point3d p1,
285  point3d p2,
286  point3d p3,
287  double *t);
288 
298 int intersection_droite_triangle (
299  point3d d1,
300  point3d d2,
301  point3d p1,
302  point3d p2,
303  point3d p3,
304  double *t);
305 
316 int intersection_triangle_triangle (
317  point3d t1,
318  point3d t2,
319  point3d t3,
320  point3d p1,
321  point3d p2,
322  point3d p3);
323 
331 int trois_points_alignes (
332  point3d A,
333  point3d B,
334  point3d C);
335 
336 #endif