我正在编写一个基于opengl的iphone应用程序,并希望允许用户根据他们在屏幕上移动两根手指的方向来转换视图.对于一根手指,我知道我可以计算从用户手指的起始位置到当前位置的向量,然后找到这个单位向量以获得方向,但我不知道如何为两个做这个手指,我不认为添加向量的组成部分和计算平均值将起作用所以我几乎卡住了.
矢量数学就像你想的那样工作:
v3 = (v1 + v2)/2 // so: v3.x = (v1.x + v2.x) / 2; // same for Y and Z
通常情况下,在进行图形编程时,为了速度原因,乘以除数比较好,所以我建议这样做:
v3 =(v1 + v2)*0.5f;
如果你只对方向感兴趣,你应该添加它们并规范化结果向量,
(v1 + v2)/abs(v1 + v2)
简单思考实验:对x和y方向的单位向量进行处理.直观地,您可以想象"平均"将是向上和向右45度角的单位向量.这正是发生的事情.思想实验表明,您需要将平均值按其大小标准化以获得单位向量.我建议你这样做.