求任意多边形内一点

该代码实现了一个函数,用于在给定的多边形内找到一个点,该点是多边形边界上与某边中点最近的点。首先,通过计算角平分线找到所有交点,然后选取离多边形某一顶点最近的交点作为结果。如果找不到这样的点,则返回(-1,-1)。" 128849702,8511434,SDK配置工业相机参数指南,"['嵌入式开发', '设备驱动', '相机接口', '软件开发', '硬件接口']
摘要由CSDN通过智能技术生成
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值