16 #include "msdevstudio/MSconfig.h"
27 #define _GLIBCPP_USE_C99 1
46 using std::replace_if;
49 using namespace hippodraw;
52 : m_origin(), m_size()
57 Rect(
double x,
double y,
double width,
double height )
58 : m_origin(), m_size()
64 double width,
double height,
double depth )
65 : m_origin(), m_size()
67 setRect( x, y, z, width, height, depth );
77 double width,
double height,
double depth )
151 if ( isnan ( x1 ) || isnan ( y1 ) )
return false;
153 double x_lo =
getX ();
154 double y_lo =
getY ();
159 if( x1 < x_lo || x1 > x_hi ||
160 y1 < y_lo || y1 > y_hi )
return false;
167 double x_lo =
getX ();
168 double y_lo =
getY ();
169 double z_lo =
getZ ();
175 if( x1 < x_lo || x1 > x_hi ||
176 y1 < y_lo || y1 > y_hi ||
177 z1 < z_lo || z1 > z_hi )
return false;
196 else if ( x1 > x_hi ) {
202 else if ( y1 > y_hi ) {
219 x1 = max ( x1, x_lo );
220 x1 = min ( x1, x_hi );
222 y1 = max ( y1, y_lo );
223 y1 = min ( y1, y_hi );
225 z1 = max ( z1, z_lo );
226 z1 = min ( z1, z_hi );
232 std::vector< double > & y )
const
237 replace_if ( x.begin (), x.end (),
238 bind2nd ( less< double > (), lo ), lo );
240 replace_if ( x.begin (), x.end (),
241 bind2nd ( greater< double > (), hi ), hi );
246 replace_if ( y.begin (), y.end (),
247 bind2nd ( less< double > (), lo ), lo );
249 replace_if ( y.begin (), y.end (),
250 bind2nd ( greater< double > (), hi ), hi );
257 std::vector< double > & y,
258 std::vector< double > & z )
const
263 replace_if ( x.begin (), x.end (),
264 bind2nd ( less< double > (), lo ), lo );
266 replace_if ( x.begin (), x.end (),
267 bind2nd ( greater< double > (), hi ), hi );
272 replace_if ( y.begin (), y.end (),
273 bind2nd ( less< double > (), lo ), lo );
275 replace_if ( y.begin (), y.end (),
276 bind2nd ( greater< double > (), hi ), hi );
281 replace_if ( z.begin (), z.end (),
282 bind2nd ( less< double > (), lo ), lo );
284 replace_if ( z.begin (), z.end (),
285 bind2nd ( greater< double > (), hi ), hi );