gpt4 book ai didi

javascript - 检查向量是否在线的另一边

转载 作者:太空宇宙 更新时间:2023-11-04 15:38:16 25 4
gpt4 key购买 nike

我正在尝试检查向量的新位置是否跨越给定的线。

我知道原始向量的坐标及其新位置。我想检查它是否交叉的线始终垂直于向量原始位置方向。并且该线与零的距离始终相同。

我使用的是 Threejs,因此可以访问它们的所有数学/矢量函数。然而这只是二维的。

这里有两张图片来说明。我想检查黑点是否越过红线。 enter image description here

enter image description here

编辑

如果有人需要查看此代码,请感谢下面@beta 的回答。它实际上是为了阻止一个点太靠近另一个物体的中心

canPointMoveTo(originalPos, newPos) {
const minDistance = 40;
const k = originalPos.clone().normalize();
const newDotProduct = newPos.dot(k);

return newDotProduct >= minDistance;
}

最佳答案

将从原点到直线的距离称为 D。
将向量命名为 v0v1
获取旧向量 v0,对其进行归一化,并将该向量称为 k:

k = v0/|v0|

现在要找出向量位于直线的哪一侧,请使用它与 k 的点积并将该值与 D 进行比较。

当且仅当旧向量和新向量位于线的不同侧时,向量“越过线”:

{v0 。 k> D 和 v1 。 k < D} 或 {v0 。 k < D 和 v1 。 k> D}。

关于javascript - 检查向量是否在线的另一边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44119672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com