55 const double radius,
const unsigned int k,
57 myCenter(x0,y0), myRadius(radius), myK(k), myPhi(phi)
64 const double radius,
const unsigned int k,
66 myCenter(aPoint), myRadius(radius) , myK(k), myPhi(phi)
72 const double radius,
const unsigned int k,
74 myRadius(radius), myK(k), myPhi(phi)
96 double t = atan2( p[ 1 ], p[ 0 ] );
97 return ( t < 0.0 ) ? ( t + 2.0 *
M_PI ) : t;
124 template <
typename T>
129 double angle = t - myPhi;
130 while ( angle < 0.0 )
136 unsigned int intervale_lower =
static_cast<unsigned int>( floor( ( angle )* myK / (2.0 *
M_PI ) ) );
137 unsigned int intervale_upper = intervale_lower == ( myK -1 ) ? 0 : intervale_lower+1;
138 double dist = myRadius*cos (
M_PI / myK );
140 myRadius*sin(myPhi + intervale_lower*2.0*
M_PI/myK) );
142 myRadius*sin(myPhi + intervale_upper*2.0*
M_PI/myK) );
145 double line_angle = atan2f( (
float)s3[ 1 ], (
float)s3[ 0 ]);
147 double rho = dist/(cos (t - line_angle - 0.5*
M_PI));
163 template <
typename T>
170 double angle = t - myPhi;
171 while ( angle < 0.0 )
174 unsigned int intervalle_lower =
static_cast<unsigned int>( floor( angle * myK / (2.0 *
M_PI ) ) );
175 unsigned int intervalle_upper = intervalle_lower == ( myK -1 ) ? 0 : intervalle_lower+1;
178 myRadius*sin(myPhi + intervalle_lower*2.0*
M_PI/myK) );
180 myRadius*sin(myPhi + intervalle_upper*2.0*
M_PI/myK) );
184 double norm = s2.norm();
196 template <
typename T>
213 template <
typename T>
218 out <<
"[NGon2D] center= "<<myCenter<<
" radius="<<myRadius<<
" number of sides="<<myK
219 <<
" phase-shift="<<myPhi;
226 template <
typename T>
239 template <
typename T>
245 object.selfDisplay( out );