【发布时间】:2013-01-10 11:08:55
【问题描述】:
给定两个点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类型的? -
我的解释如下。但不管。为什么向量不只是一个结构?为什么需要联合和“数组”?
-
此问题已被 Gareth Rees、Paul R、Mark Dickinson 和 0xbadf00d 标记为重复,因为“此问题之前已被问过并且已经有答案。”。 但是截至撰写本文时,该问题还没有公认的答案。我认为除非引用的问题具有可接受的答案,否则不应将问题标记为重复。
标签: c++ math vector-graphics