首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取其他智能体的相对坐标

获取其他智能体的相对坐标
EN

Stack Overflow用户
提问于 2018-01-19 11:18:46
回答 1查看 49关注 0票数 0

以这样一种尊重世界包装的方式获得一个智能体相对于另一个智能体的坐标的最好方法是什么?

也就是说,天真的解决方案是:

代码语言:javascript
运行
复制
to-report relative-xcor [ other-agent ]
  report [ xcor ] of other-agent - xcor
end

(与ycor类似)该代码的问题在于,例如,当主代理在屏幕的最右侧,而other-agent在最左侧时,该代码将是错误的。

想法?到目前为止,我最好的想法是使用towards和三角函数,但我想知道是否有更好的方法。

编辑:

举一个例子来说明为什么上面的说法是错误的,假设你的世界有min-pxcor = -5max-pxcor = 5,并且有包装。如果我们在xcor = 5turtle 0,在xcor = -5turtle 1,那么[ relative-xcor turtle 1 ] of turtle 0会给出-10,而正确的答案是1 (由于世界包装)。我认为在我的问题中隐含的是它应该给出最小的(按绝对值)相对坐标。

EN

回答 1

Stack Overflow用户

发布于 2018-01-21 03:30:42

(这里的操作)所以到目前为止我想出的唯一解决方案是:

代码语言:javascript
运行
复制
to-report rel-xcor [ other-agent ]
  report ifelse-value (self = other-agent) [
    0
  ] [
    0 - (sin towards other-agent) * distance other-agent
  ]
end

to-report rel-ycor [ other-agent ]
  report ifelse-value (self = other-agent) [
    0
  ] [
    0 - (cos towards other-agent) * distance other-agent
  ]
end

(回想一下,由于sin的角度是翻转的,所以cos给出y坐标,netlogo给出x)

但这似乎过于复杂了。但是,如果任何人在这个问题上遇到同样的问题,想知道同样的事情,这就是我目前使用的。不过,我很乐意接受一个更好的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48333626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档