gpt4 book ai didi

javascript - 确定一个二维向量是在另一个向量的右边还是左边

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:48:50 26 4
gpt4 key购买 nike

给定两个二维向量,您如何判断第二个向量是在第一个向量的右侧(顺时针)还是左侧(逆时针)?

例如,在这些图中,B 在 A 的右侧(逆时针方向)

A   B   .       .----> A
^ ¬ |\ |
| / | \ |
|/ V \ V
. B A B

最佳答案

您可以使用点积来实现这一点。 dot(a, b) == a.x*b.x + a.y*b.y 可用于判断向量是否垂直:

var dot = a.x*b.x + a.y*b.y
if(dot > 0)
console.log("<90 degrees")
else if(dot < 0)
console.log(">90 degrees")
else
console.log("90 degrees")

换个说法。 dot > 0 告诉您 a 是否“在”b 之前。


假设 ba 的右边。将 b 逆时针旋转 90 度使其位于 a 的前面。
现在假设 ba 的左边。将 b 逆时针旋转 90 度,将其置于 a 之后。

因此,dot(a, rot90CCW(b)) 的符号告诉您 b 是在 a 的右边还是左边,其中 rot90CCW(b) == {x: -b.y, y: b.x}.

简化:

var dot = a.x*-b.y + a.y*b.x;
if(dot > 0)
console.log("b on the right of a")
else if(dot < 0)
console.log("b on the left of a")
else
console.log("b parallel/antiparallel to a")

关于javascript - 确定一个二维向量是在另一个向量的右边还是左边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221873/

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