我正在寻找一种快速有效的方法来确定向量 B 是否在向量 A 和向量 C 的小角度之间。通常我会使用垂直点积来确定每条线 B 的哪一侧,但在这种情况下不是如此简单,原因如下:
- 没有一个向量可以被认为是规范化的,规范化它们是我希望避免的额外步骤。
- 我不清楚哪一边是最小的角度,所以很难说哪一边是好还是不好。
- A 和 B 可能是共线的或正好相隔 180 度,在这种情况下我想返回 false。
- 当我在 3D 环境中工作时,我很容易将其简化为 2D,如果这样可以让事情变得更容易,更重要的是更快。该测试将用于需要尽可能快地运行的算法。
如果有一些简单有效的方法来确定我的垂直向量应该指向哪个方向,我可以使用这两个点积进行测试。
到目前为止,我一直在考虑但没有取得多大成功的另一种方法是使用矩阵。理论上,根据我对矩阵变换的理解,我应该能够使用 A 和 C 作为基向量。然后将 B 乘以矩阵 I 应该能够通过 X 和 Y 是否都为正来测试 B 所在的象限。如果我能让这种方法发挥作用,它可能是最好的,因为一个矩阵乘法应该比两个点积快,而且我不必担心哪一边的角度最小。
问题出在我的测试中,我不能简单地使用 A 和 C 作为基础并将其正常相乘并获得正确的行为。我真的不确定我在这里做错了什么。我已经多次遇到“向量空间”这个术语,据我所知,它似乎是一个与矩阵变换非常相似的概念,不需要正交基或正交基。它和矩阵一样吗?如果没有,是否有更好的方法,我将如何使用它?
只是为了更直观地解释我在说什么:
@Aki Suihkonen 我似乎无法让它工作。编写了一个我可以通过的模拟案例,看看我是否无法弄清楚
对于这种情况,使用
斧头 2.9579773 Ay 3.315979
Cx 2.5879822 Cy 5.1630249
对于围绕四个象限旋转的 BI,向量将空间划分为。
我得到的迹象: - Q1 --
- Q2 +-
- Q3 +-
- Q4--
假设我在环境中以与图像相同的方向旋转,我很确定我做了。