BoostGeometryTools.hpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536
  1. //
  2. // BoostGeometryTools.hpp
  3. // auto_fill_jewel_v3
  4. //
  5. // Created by Red on 2024/11/26.
  6. // 几何计算的相关代码。
  7. #ifndef BoostGeometryTools_hpp
  8. #define BoostGeometryTools_hpp
  9. #include <stdio.h>
  10. #include <boost/geometry.hpp>
  11. #include <boost/geometry/geometries/point_xy.hpp>
  12. #include <boost/geometry/geometries/polygon.hpp>
  13. struct BoostGeometryTools {
  14. typedef boost::geometry::model::point<float,2,boost::geometry::cs::cartesian> BoostPoint;//定义点
  15. typedef boost::geometry::model::polygon<BoostPoint,false,false> BoostPolygon;//定义多边形
  16. typedef boost::geometry::model::box<BoostPoint> BoostBox;
  17. static bool isAIntersectsB(BoostPolygon& polyA, BoostPolygon& polyB);//检验多边形A和B是否相交
  18. static bool isAWithinB(BoostPolygon& polyA, BoostPolygon& polyB) ;// 测试 A 在 B 的内部
  19. static BoostPolygon makeBox( float lowerLeftX,float lowerLeftY,float wid,float hei ) ;
  20. static BoostPolygon makeRotatedBox( float lowerLeftX,float lowerLeftY,float wid,float hei,float rotdeg) ;//绕0,0点旋转
  21. static BoostPolygon makeRotateNTranslateBox( float lowerLeftX,float lowerLeftY,float wid,float hei,float rotdeg,float dx,float dy) ;//先绕0,0点旋转,然后平移dx和dy
  22. static void rotatePoint( float x0, float y0, float rotRad, float& x1,float& y1) ;//围绕0,0点旋转一个点,rotRad使用弧度
  23. static BoostPolygon translatePolygon(BoostPolygon& poly,float dx,float dy) ;//平移一个多边形
  24. static BoostPolygon convex_hull(BoostPolygon& poly) ;//计算外接包裹盒子多边形
  25. static bool pointIntersetsBox(BoostPoint& ptA,BoostPolygon& polyB) ;//检验点是否在多边形内部
  26. } ;
  27. #endif /* BoostGeometryTools_hpp */