CGR Localization
 All Classes Namespaces Files Functions Variables Macros Pages
geometry.h
1 #ifndef __GEOMETRY_H__
2 #define __GEOMETRY_H__
3 
4 #define USE_QUATERIONS 1
5 #define USE_MATRIX_FIXED_SIZE 0
6 #define USE_POSE 1
7 
8 #include <stdio.h>
9 #include <stdint.h>
10 
11 //==== Vector types ====//
12 
13 #include "gvector.h"
14 #include "line.h"
15 #include "geomalgo.h"
16 
19 
22 
25 
26 struct vector2s{
27  int16_t x,y;
28 };
29 
30 struct vector3s{
31  int16_t x,y,z;
32 };
33 
34 //==== Some vector conversion functions ====//
35 
36 template <class vector_a,class vector_b>
37 void vcopy2d(vector_a &dest,const vector_b &src)
38 {
39  dest.x = src.x;
40  dest.y = src.y;
41 }
42 
43 template <class vector_a,class vector_b>
44 void vcopy3d(vector_a &dest,const vector_b &src)
45 {
46  dest.x = src.x;
47  dest.y = src.y;
48  dest.z = src.z;
49 }
50 
51 template <class vec_in>
52 inline vector2f vec2f(const vec_in &p)
53 {
54  return(vector2f(p.x,p.y));
55 }
56 
57 template <class vec_in>
58 inline vector2d vec2d(const vec_in &p)
59 {
60  return(vector2d(p.x,p.y));
61 }
62 
63 template <class vec_in>
64 inline vector3f vec3f(const vec_in &p)
65 {
66  return(vector3f(p.x,p.y,p.z));
67 }
68 
69 template <class vec_in>
70 inline vector3d vec3d(const vec_in &p)
71 {
72  return(vector3d(p.x,p.y,p.z));
73 }
74 
75 template <class vec_in>
76 inline vector2s vec2s(const vec_in &p)
77 {
78  vector2s vs;
79  vs.x = (int)rint(p.x);
80  vs.y = (int)rint(p.y);
81  return(vs);
82 }
83 
84 template <class vec_in>
85 inline vector3s vec3s(const vec_in &p)
86 {
87  vector3s vs;
88  vs.x = (int)rint(p.x);
89  vs.y = (int)rint(p.y);
90  vs.z = (int)rint(p.z);
91  return(vs);
92 }
93 
94 //==== Angle conversion, and normally missing constant(s) ====//
95 
96 #define RAD(deg) ((deg) * (M_PI / 180.0)) /* convert radians to degrees */
97 #define DEG(rad) ((rad) * (180.0 / M_PI)) /* convert degrees to radians */
98 
99 #ifndef HUGE_VALF
100 #define HUGE_VALF (1E37)
101 #endif
102 
103 #endif // __GEOMETRY_H__
C++ Interfaces: Line2d.