【发布时间】:2019-08-29 06:23:59
【问题描述】:
假设我有两个幅值非零的输入向量:
Vector3 t;
Vector3 o;
我需要找到归一化向量v,以便在与o 正交的所有归一化向量中,v 是最接近这个t“目标”向量的向量。我还需要知道t 和o 是否共线,在这种情况下不存在这样的单个v。
这种关系的说明:
举一个具体的例子,假设我有一个游戏,玩家偶尔会在环境的表面上看到某个类似指南针的物体。玩家必须将指南针上的指针指向随机放置在游戏世界某处的图片对象。当玩家选择针的位置时,我需要知道玩家的选择距离对象的“真实”方向有多远。
罗盘指针固定绕轴旋转,世界方向为o(也许这是罗盘的transform.forward),图中游戏对象的方向为t。
当t和o不正交时,罗盘指针将无法直接指向t,所以我想知道:如何才能得到最接近的罗盘指针方向可以指向,也就是v?这样,我可以测量这个目标方向和玩家选择的方向之间的角度。而且,当这个角度低于某个阈值时,玩家就成功了。
【问题讨论】:
-
这听起来更适合Maths,因为实际实现似乎非常次要
-
@derHugo As far as I can tell,关于如何实施解决方案的问题(即使解决方案是基于数学的)都是主题。
-
好吧,链接的问题被强烈反对,并且过于宽泛;)老实说,如果你还没有回答我会建议移动它,因为它主要是关于理解它背后的数学......还要注意other answer .. Unity 中的实现非常简单,因为这些方法的调用方式与解决方案背后的数学结构完全一样。这似乎更像是一个关于叉积如何工作的问题,我会说这是一个纯数学问题。