DGtal
0.6.devel
Main Page
Related Pages
Modules
Namespaces
Data Structures
Examples
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
src
DGtal
shapes
parametric
Ellipse2D.h
1
17
#pragma once
18
33
#if defined(Ellipse2D_RECURSES)
34
#error Recursive header files inclusion detected in Ellipse2D.h
35
#else // defined(Ellipse2D_RECURSES)
36
37
#define Ellipse2D_RECURSES
38
39
#if !defined Ellipse2D_h
40
41
#define Ellipse2D_h
42
44
// Inclusions
45
#include <iostream>
46
#include "DGtal/base/Common.h"
47
#include "DGtal/shapes/parametric/StarShaped2D.h"
48
#include <cmath>
50
51
namespace
DGtal
52
{
53
55
// template class Ellipse2D
63
template
<
typename
TSpace>
64
class
Ellipse2D
:
public
StarShaped2D
<TSpace>
65
{
66
// ----------------------- Standard services ------------------------------
67
public
:
68
69
typedef
TSpace
Space
;
70
typedef
typename
Space::Point
Point
;
71
typedef
typename
Space::RealPoint
RealPoint2D
;
72
typedef
typename
Space::RealVector
RealVector2D
;
73
77
~Ellipse2D
();
78
87
Ellipse2D
(
const
double
x0,
const
double
y0,
88
const
double
a0,
const
double
a1,
const
double
theta);
89
97
Ellipse2D
(
const
RealPoint2D
&aPoint,
98
const
double
a0,
const
double
a1,
const
double
theta);
99
107
Ellipse2D
(
const
Point
&aPoint,
108
const
double
a0,
const
double
a1,
const
double
theta);
109
110
111
// ------------- Implementation of 'StarShaped' services ------------------
112
public
:
113
118
RealPoint2D
getLowerBound
()
const
119
{
120
return
RealPoint2D
(
myCenter
[0] -
myAxis1
,
myCenter
[1] -
myAxis1
);
121
}
122
127
RealPoint2D
getUpperBound
()
const
128
{
129
return
RealPoint2D
(
myCenter
[0] +
myAxis1
,
myCenter
[1] +
myAxis1
);
130
}
131
135
RealPoint2D
center
()
const
136
{
137
return
myCenter
;
138
}
139
146
double
parameter
(
const
RealPoint2D
& p )
const
;
147
148
155
RealPoint2D
x
(
const
double
t )
const
;
156
163
RealVector2D
xp
(
const
double
t )
const
;
164
170
RealVector2D
xpp
(
const
double
t )
const
;
171
172
173
// ------------------------- data ----------------------------
174
private
:
175
179
RealPoint2D
myCenter
;
180
184
double
myAxis1
;
185
186
190
double
myAxis2
;
191
195
double
myTheta
;
196
197
// ----------------------- Interface --------------------------------------
198
public
:
199
204
void
selfDisplay
( std::ostream & out )
const
;
205
210
bool
isValid
()
const
;
211
212
213
// ------------------------- Hidden services ------------------------------
214
protected
:
215
220
Ellipse2D
();
221
222
private
:
223
229
// Ellipse2D ( const Ellipse2D & other );
230
237
Ellipse2D
&
operator=
(
const
Ellipse2D
& other );
238
239
// ------------------------- Internals ------------------------------------
240
private
:
241
242
};
// end of class Ellipse2D
243
244
251
template
<
typename
T>
252
std::ostream&
253
operator<< ( std::ostream & out, const Ellipse2D<T> & object );
254
255
}
// namespace DGtal
256
257
259
// Includes inline functions.
260
#include "DGtal/shapes/parametric/Ellipse2D.ih"
261
262
// //
264
265
#endif // !defined Ellipse2D_h
266
267
#undef Ellipse2D_RECURSES
268
#endif // else defined(Ellipse2D_RECURSES)
Generated on Wed Dec 19 2012 19:10:23 for DGtal by
1.8.1.1