Hi, I'm just searching for a polygon Boolean library and I found this Boost.Polygon, but I met a problem with self intersect polygon. like below: typedef gtl::polygon_data<int> Polygon; std::vector<Polygon > ps; typedef Polygon::point_type Point; Point pts[] = { gtl::construct<Point>(0, 0), gtl::construct<Point>(10, 10), gtl::construct<Point>(10, 0), gtl::construct<Point>(0, 10) }; Polygon poly; gtl::set_points(poly, pts, pts+ sizeof(pts)/sizeof(Point)); ps += poly; I want to put a self intersect polygon |\ /| | \ / | | \/ | | /\ | | / \ | |/ \| into a Polygon set ps, But when I use ps += poly to put it, in the ps the polygon has been cut to /| / | / | \ | \ | \| and the left part doesn't exist anymore. I'm not sure whether I use it in a wrong way, or the library doesn't support this kind of operation? Best regards, Zeal --------------------------------------------------------------------------------------------------- Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s) is intended only for the use of the intended recipient and may be confidential and/or privileged of Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of this communication is not the intended recipient, unauthorized use, forwarding, printing, storing, disclosure or copying is strictly prohibited, and may be unlawful.If you have received this communication in error,please immediately notify the sender by return e-mail, and delete the original message and all copies from your system. Thank you. ---------------------------------------------------------------------------------------------------