959 auto& data = *
reinterpret_cast<Param_PL*
>(param);
962 data.polyline_o.set( data.vpt );
963 data.polyline_c.set( data.vpt );
966 if( data.polyline_c.isSimple() )
969 auto len = data.showClosedPoly ? data.polyline_c.length() : data.polyline_o.length();
970 if( data.showClosedPoly )
971 data.polyline_c.draw( data.img, color );
973 data.polyline_o.draw( data.img, color );
977 li.
draw( data.img, col_green );
979 data.putTextLine( std::string(
"Nb pts=") + std::to_string( data.polyline_c.size() ), 0 );
980 data.putTextLine( std::string(
"length=") + std::to_string(len) );
982 auto intersPts_o =
li.
intersects(data.polyline_o).get();
983 auto intersPts_c =
li.
intersects(data.polyline_c).get();;
985 auto intersPts = ( data.showClosedPoly ? intersPts_c : intersPts_o );
986 for(
const auto&
pt: intersPts )
990 cir.
draw( data.img, col_green );
999 std::string str_ispoly{
"Polygon: N"};
1000 if( data.showClosedPoly )
1002 draw( data.img, i_cir_c.get() );
1003 draw( data.img, i_rect_c.get() );
1004 if( data.polyline_c.isSimple() )
1005 str_ispoly =
"Polygon: Y";
1009 draw( data.img, i_cir_o.get() );
1010 draw( data.img, i_rect_o.get() );
1012 data.putTextLine( str_ispoly );
1013 auto bb = data.polyline_c.getBB();
1014 bb.draw( data.img );
1016 if( data.showClosedPoly && data.polyline_c.isSimple() )
1018 auto centroid = data.polyline_c.centroid();
1025 cv::Scalar( 250,0,0 )
1028 data.putTextLine( std::string(
"area=") + std::to_string(data.polyline_c.area()) );
1030 auto isC =
"Convex: Y";
1031 if( !data.polyline_c.isConvex() )
1033 data.putTextLine( isC );
1035 auto isInside = data._pt_mouse.isInside(data.polyline_c);
1036 data.putTextLine( std::string(
"IsInside=") + std::string( isInside?
"Y":
"N" ) );
1038 drawText( data.img,
"Inside", data._pt_mouse );
1040 drawText( data.img,
"Outside", data._pt_mouse );
1044 data._cpoly = data.polyline_c;
A circle.
Definition: homog2d.hpp:378
void drawText(img::Image< U > &im, std::string str, Point2d_< FPT > pt, img::DrawParams dp=img::DrawParams())
Free function, draws text str at position pt.
Definition: homog2d.hpp:11260
void draw(img::Image< cv::Mat > &, img::DrawParams dp=img::DrawParams()) const
Draw FRect (Opencv implementation)
Definition: homog2d.hpp:11845
void draw(Data &data)
Definition: precision_test_opencv.cpp:184
FRect rect
Definition: homog2d_test.cpp:4038
void draw(img::Image< img::SvgImage > &im, img::DrawParams dp=img::DrawParams()) const
SVG draw function.
Definition: homog2d.hpp:4414
Draw parameters, independent of back-end library.
Definition: homog2d.hpp:514
void draw(img::Image< cv::Mat > &, img::DrawParams=img::DrawParams()) const
Draw Circle (Opencv implementation)
Definition: homog2d.hpp:11907
Line2d li
Definition: homog2d_test.cpp:4035
detail::IntersectM< FPT > intersects(const Line2d_< FPT2 > &line) const
FRect/Line intersection.
Definition: homog2d.hpp:3012
detail::Intersect< detail::Inters_1, FPT > intersects(const Line2d_< FPT2 > &other) const
Line/Line intersection.
Definition: homog2d.hpp:4285
base::LPBase< typ::IsPoint, FPT > centroid(const base::PolylineBase< PLT, FPT > &pl)
Returns centroid of Polyline (free function)
Definition: homog2d.hpp:10907
Point2d_< HOMOG2D_INUMTYPE > Point2d
Default point type, uses double as numerical type.
Definition: homog2d.hpp:12379
DrawParams & setPointStyle(PtStyle ps)
Definition: homog2d.hpp:585
A Flat Rectangle, modeled by its two opposite points.
Definition: homog2d.hpp:379
DrawParams & setColor(uint8_t r, uint8_t g, uint8_t b)
Definition: homog2d.hpp:605
detail::Intersect< detail::Inters_2, FPT > intersects(const Line2d_< FPT2 > &li) const
Circle/Line intersection.
Definition: homog2d.hpp:3434
Point2d pt
Definition: homog2d_test.cpp:4034
Circle cir
Definition: homog2d_test.cpp:4036
Base class, will be instanciated as Point2d_ or Line2d_.
Definition: homog2d.hpp:365