我正在尝试计算圆上两个矢量或角度之间的有符号角度。例如,从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文档'中描述的方法将角度转换为传统形式,但这也没有给出正确的答案。此外,我会在每个链接上给每位记者打电话给所有记者,所以如果有人对如何精简这种方法有所了解,我将非常感激。
答案 0 :(得分:3)
subtract-headings 30 330
将通过说“顺时针是正面的(根据你给出的例子)给你所要求的。”