gpt4 book ai didi

c# - 两条线相交的算法?

转载 作者:IT王子 更新时间:2023-10-29 04:14:22 25 4
gpt4 key购买 nike

我有 2 行。两条线都包含 X 和 Y 的 2 个点。这意味着它们都有长度。

我看到 2 个公式,一个使用行列式,一个使用普通代数。哪种计算最有效?公式是什么样的?

我很难在代码中使用矩阵。

这就是我目前所拥有的,它能更高效吗?

public static Vector3 Intersect(Vector3 line1V1, Vector3 line1V2, Vector3 line2V1, Vector3 line2V2)
{
//Line1
float A1 = line1V2.Y - line1V1.Y;
float B1 = line1V1.X - line1V2.X;
float C1 = A1*line1V1.X + B1*line1V1.Y;

//Line2
float A2 = line2V2.Y - line2V1.Y;
float B2 = line2V1.X - line2V2.X;
float C2 = A2 * line2V1.X + B2 * line2V1.Y;

float det = A1*B2 - A2*B1;
if (det == 0)
{
return null;//parallel lines
}
else
{
float x = (B2*C1 - B1*C2)/det;
float y = (A1 * C2 - A2 * C1) / det;
return new Vector3(x,y,0);
}
}

最佳答案

假设您有两行 Ax + By = C 的形式,您可以很容易地找到它:

float delta = A1 * B2 - A2 * B1;

if (delta == 0)
throw new ArgumentException("Lines are parallel");

float x = (B2 * C1 - B1 * C2) / delta;
float y = (A1 * C2 - A2 * C1) / delta;

来自 here

关于c# - 两条线相交的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4543506/

25 4 0
文章推荐: javascript - 如何对每个用户的聊天消息进行分组?
文章推荐: c# - .net 中的每种类型都继承自 System.Object 吗?
文章推荐: c# - 匹配和替换
文章推荐: javascript - "Class extends value # is not a constructor or null"