求平面上两条线段的交点坐标

给定平面上两条线段LineA与LineB,以及对应的端点坐标,计算出两条线段的交点
LineA (LineA_Pt1, LineA_Pt2) LineB(LineB_Pt1, LineB_Pt2)

// 仅适用于2D PointXY
templete<Point>
Point GetInterSectionPt(const Point &LineA_Pt1, const Point &LineA_Pt2,
const Point &LineB_Pt1, const Point &LineB_Pt2)
{
	Point LineA_dir = LineA_Pt2 - LineA_Pt1;
	LineA_dir.Normalize();

	Point dir1 = LineB_Pt1 - LineA_Pt1;
	Point dir2 = LineB_Pt2 - LineA_Pt1;

	Double dProj1 = sqrt(pow(dir1.GetLength(), 2) - pow(dir1*LineA_dir, 2));
	Double dProj2 = sqrt(pow(dir2.GetLength(), 2) - pow(dir2*LineA_dir, 2));

	Point InterSection = (LineB_Pt1 * dProj2 + LineB_Pt2 * dProj1) / (dProj1 + dProj2);

	return InterSection;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值