C#【计算两线段的交点】

两条线段相交的交点计算


当两条线相交时会返回交点坐标,否则会返回null。
// 计算两线段交点
public static Point2f? GetIntersectionPoint(Point2f P1, Point2f P2, Point2f P3, Point2f P4)
{
	float denom = (P4.X - P3.X) * (P2.Y - P1.Y) - (P2.X - P1.X) * (P4.Y - P3.Y);
	if (denom == 0) return null;
    float t1 = ((P3.X - P1.X) * (P3.Y - P4.Y) - (P3.Y - P1.Y) * (P3.X - P4.X)) / denom;
    return new Point2f(P1.X + t1 * (P2.X - P1.X), P1.Y + t1 * (P2.Y - P1.Y));
}

例如:
当前给出两线坐标为
线1 (101.2, 150.2) (405.3, 100) 线2 (101.2,411.4)(400.01, 55.5)
将参数传入函数

Point2f? ptf = GetIntersectionPoint(new Point2f(101.2f, 150.2f), new Point2f(405.3f, 100.0f), new Point2f(101.2f, 411.4f), new Point2f(400.01f, 55.5f));

输出结果为
在这里插入图片描述

在这里插入图片描述


其他文章

CSDN_MX 使用C#编写Sockets
CSDN_MX OpenCvSharp入门

查看主页了解更多内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rice_cc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值