DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
AngleComputer.ih
1 
33 
34 // IMPLEMENTATION of inline methods.
36 
38 #include <cstdlib>
40 
41 
42 
44 // Implementation of inline methods //
45 
46 
47 
52 inline
53 float
55 {
56  while ( i < 0.0f ) i += (float) (M_PI*2.0);
57  while ( i > (double)(M_PI*2.0) ) i -= (float)(M_PI*2.0);
58  return i;
59 }
60 
61 
70 inline
71 bool
72 DGtal::AngleComputer::less( float i, float j )
73 {
74  float d = j - i;
75  if ( d > 0.0f )
76  return d < M_PI;
77  else
78  return (-d) >= M_PI;
79 }
80 
81 
89 inline
90 float
91 DGtal::AngleComputer::posDiff( float j, float i )
92 {
93  return ( i <= j ) ? j - i : j + (float)(M_PI*2.0) - i;
94 }
95 
103 inline
104 float
106 {
107  return less( i, j ) ? posDiff( j, i ) : -posDiff( i, j );
108 }
109 
110 
118 inline
119 float
120 DGtal::AngleComputer::min( float i, float j )
121 {
122  return less( i, j ) ? i : j;
123 }
124 
132 inline
133 float
134 DGtal::AngleComputer::max( float i, float j )
135 {
136  return less( i, j ) ? j : i;
137 }
138 
139 
140 
145 inline
146 double
148 {
149  while ( i < 0.0 ) i += (float)(M_PI*2.0);
150  while ( i > (float)(M_PI*2.0) ) i -= (float)(M_PI*2.0);
151  return i;
152 }
153 
154 
163 inline
164 bool
165 DGtal::AngleComputer::less( double i, double j )
166 {
167  double d = j - i;
168  if ( d > 0.0 )
169  return d < M_PI;
170  else
171  return (-d) >= M_PI;
172 }
173 
174 
182 inline
183 double
184 DGtal::AngleComputer::posDiff( double j, double i )
185 {
186  return ( i <= j ) ? j - i : j + (float)(M_PI*2.0) - i;
187 }
188 
196 inline
197 double
198 DGtal::AngleComputer::deviation( double j, double i )
199 {
200  return less( i, j ) ? posDiff( j, i ) : -posDiff( i, j );
201 }
202 
203 
211 inline
212 double
213 DGtal::AngleComputer::min( double i, double j )
214 {
215  return less( i, j ) ? i : j;
216 }
217 
225 inline
226 double
227 DGtal::AngleComputer::max( double i, double j )
228 {
229  return less( i, j ) ? j : i;
230 }
231 
232 
233 
234 
235 // //
237 
238