可能重复:
如何检测两条线段的交点? 给定两个点
如何检测两条线段的交点? 给定两个点
a
和b
以及两个向量v
和u
,我想以以下方式找到第三个点c
,即交点:vector2 intersection(vector2 a, vector2 v, vector2 b, vector2 u)
{
float r, s;
a + r * v = b + s * u;
r * v - s * u = b - a
r * v.x - s * u.x = b.x - a.x
r * v.y - s * u.y = b.y - a.y
}
有没有比使用高斯消元更好的方法来解决这个系统?或者说,这是处理这个问题的最佳(或至少是可接受的)方法吗?
编辑:
vector2
的定义。
typedef union vector2
{
float v[2];
struct { float x, y; };
} vector2;
a
和 b
也属于类型为 vector2
,因为点和向量之间唯一的区别就在于它们被仿射变换转换的方式。
vector2
是如何定义的?为什么 points a 和 b 也是vector2
类型? - Paul R