可能重複:
How do you detect where two line segments intersect?給定兩個點和兩個向量,找到交點
考慮兩點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
}
除了使用高斯消元來解決這個系統還有別的方法嗎?或者,這是最好的(或至少是可以接受的)方式來處理這個問題?
EDIT: 定義的vector2
typedef union vector2
{
float v[2];
struct { float x, y; };
} vector2;
a
和b
也vector2
類型的,因爲一個點和向量之間的唯一區別是在它是由仿射變換變換的方式。
'vector2'是如何定義的?爲什麼* points * a和b也是'vector2'類型? –
我的解釋如下。但不管。爲什麼vector不僅僅是一個結構?爲什麼你需要工會和「陣列」? –
這個問題已被Gareth Rees,Paul R,Mark Dickinson和0xbadf00d標記爲重複,因爲「此問題已被詢問並且已經有答案。」。 **但是**這個問題在撰寫本文時沒有被接受的答案。我不認爲應該將問題標記爲重複,除非所引用的問題具有可接受的答案。 – user316117