SkPoint findPointinPolygon(const std::vector<SkPoint>& polygon)
{
if (polygon.size() < 3)
return SkPoint::Make(-1,-1);
SkPoint p1,p2,p3; //取多边形任意3个点
p1 = polygon[0];p2 = polygon[1];p3 = polygon[2];
//求角平分线
Wm5::Vector2d v1,v2,v_mid;
v1 = Wm5::Vector2d(p1.fX-p2.fX,p1.fY-p2.fY);
v2 = Wm5::Vector2d(p3.fX-p2.fX,p3.fY-p2.fY);
v_mid = v1/v1.Length()+v2/v2.Length();
if (v_mid.Length() == 0)
return SkPoint::Make(-1,-1);
//构造角平分线直线
CAglMat::AlgLine linMid;
linMid.m_pt.X() = p2.fX;
linMid.m_pt.Y() = p2.fY;
v_mid.Normalize();
linMid.m_direct.X() = v_mid.X();
linMid.m_direct.Y() = v_mid.Y();
//求角平分线与各分的交点
CAglMat cam;
vector<SkPoint> intrPoints;
for (int i = 2 ; i < polygon.size() ; i++ )
{
Wm5::Vector2d v1Temp,v2Temp;
v1Temp = Wm5::Vector2d(polygon[i].fX,polygon[i].fY);
if (i==polygon.size()-1)
v2Temp = Wm5::Vector2d(polygon
求任意多边形内一点
最新推荐文章于 2024-01-03 23:40:19 发布
该代码实现了一个函数,用于在给定的多边形内找到一个点,该点是多边形边界上与某边中点最近的点。首先,通过计算角平分线找到所有交点,然后选取离多边形某一顶点最近的交点作为结果。如果找不到这样的点,则返回(-1,-1)。"
128849702,8511434,SDK配置工业相机参数指南,"['嵌入式开发', '设备驱动', '相机接口', '软件开发', '硬件接口']
摘要由CSDN通过智能技术生成