二维向量之间的符号角
signed angle between 2D vectors
我正在尝试计算圆上两个向量或角度之间的符号角。例如,从 330 到 30 应该给出 60(顺时针为正),从 30 到 330 应该给出 -60。我已经尝试实现 Finding Signed Angle Between Vectors 中给出的方法
.下面是我试过的相关代码。
to-report signed-angle [a1 a2]
let v1 list sin a1 cos a1
let v2 list sin a2 cos a2
let v1x item 0 v1
let v1y item 1 v1
let v2x item 0 v2
let v2y item 0 v2
report atan (v1x * v2y - v1y * v2x) (v1x * v2x + v1y * v2y)
end
但此代码并未给出正确答案,即使它似乎是其他语言的认可答案。我知道 NetLogo 的角度是 0(上)和 90(右)。我也尝试过使用 'atan documentation' 中描述的方法将角度转换为常规形式,但这也没有给出正确答案。另外,我会在每个 link 的每个滴答声中给这位记者打电话,所以如果有人对如何简化这种方法有任何想法,我将不胜感激。
subtract-headings 30 330
会通过说“顺时针方向为正(与您给出的示例相对)”来满足您的要求。
我正在尝试计算圆上两个向量或角度之间的符号角。例如,从 330 到 30 应该给出 60(顺时针为正),从 30 到 330 应该给出 -60。我已经尝试实现 Finding Signed Angle Between Vectors 中给出的方法 .下面是我试过的相关代码。
to-report signed-angle [a1 a2]
let v1 list sin a1 cos a1
let v2 list sin a2 cos a2
let v1x item 0 v1
let v1y item 1 v1
let v2x item 0 v2
let v2y item 0 v2
report atan (v1x * v2y - v1y * v2x) (v1x * v2x + v1y * v2y)
end
但此代码并未给出正确答案,即使它似乎是其他语言的认可答案。我知道 NetLogo 的角度是 0(上)和 90(右)。我也尝试过使用 'atan documentation' 中描述的方法将角度转换为常规形式,但这也没有给出正确答案。另外,我会在每个 link 的每个滴答声中给这位记者打电话,所以如果有人对如何简化这种方法有任何想法,我将不胜感激。
subtract-headings 30 330
会通过说“顺时针方向为正(与您给出的示例相对)”来满足您的要求。