如何计算两个向量的平均方向

时间:2009-02-19 18:02:20

标签: iphone math vector

我正在编写一个基于opengl的iphone应用程序,并希望允许用户根据他们在屏幕上移动两根手指的方向来转换视图。对于一根手指,我知道我可以计算从用户手指的起始位置到当前位置的向量,然后找到单位向量以获得方向,但我不知道我将如何为两个做这个手指,我不认为添加向量的组成部分并计算平均值会有效,所以我几乎被卡住了。

8 个答案:

答案 0 :(得分:27)

矢量数学就像你想象的那样:

v3 = (v1 + v2)/2

// so:
v3.x = (v1.x + v2.x) / 2;
// same for Y and Z

答案 1 :(得分:8)

在进行图形编程时,通常最好乘以速度除以速度原因,所以我建议这样做:

v3 =(v1 + v2)* 0.5f;

答案 2 :(得分:6)

如果你只对方向感兴趣,你应该添加它们并规范化结果向量,

(v1 + v2)/abs(v1 + v2)

答案 3 :(得分:5)

简单思考实验:对x和y方向的单位向量进行处理。直观地,您可以想象“平均”将是向上和向右45度角的单位向量。这正是发生的事情。思想实验表明,您需要将平均值按其大小标准化以获得单位向量。我建议你这样做。

答案 4 :(得分:3)

添加它们并除以2可以正常工作

答案 5 :(得分:3)

抱歉,这是错误的。在矢量世界中,平均分量意义上的“均值”意味着什么。想象(-1 0)和(1 0) - >平均值= 0 0; - )

答案 6 :(得分:2)

要直观地理解它,你可以向下绘制两个向量。然后在两者的端点之间绘制一条线段。该段的中点是平均向量。这适用于任何数量的维度。

答案 7 :(得分:1)

它并不像它看起来那么容易:你必须使用slerp-interpolation来找到单位球上的半弧:http://en.wikipedia.org/wiki/Slerp 深入探讨:http://www.essentialmath.com/index.htm