首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何判断智能体面对的是一个点?

如何判断智能体面对的是一个点?
EN

Stack Overflow用户
提问于 2015-12-08 17:39:27
回答 2查看 29关注 0票数 1

我在做一个游戏。我知道智能体位置(x,y)及其在范围(-PI PI)中的方向,以及感兴趣对象的位置(x,y)。如何判断agent是否正在查看对象?

EN

回答 2

Stack Overflow用户

发布于 2015-12-08 17:44:21

将向量从您的代理获取到目标(tx - ax, ty - ay),并找到它的方向(通常是atan2(ty - ay, tx - ax),但您没有指定see1)。然后比较这两个方向。

如果您知道播放器的朝向方向(也可以从orientation1计算),则可以使用点积:

代码语言:javascript
运行
复制
c := dot(dir, normalized(t - a))

假设a是智能体的位置,t是目标的位置,那么c就是它们之间内角的余弦。

1如果方向是逆时针方向,且x轴方向为0,则朝向方向将为dir := (cos(angle), sin(angle))

票数 0
EN

Stack Overflow用户

发布于 2015-12-08 18:07:59

你需要一些定量的标准来决定“看”还是不看。它可以用角度(两侧小于5°)或距离(两侧小于50厘米)来表示。

在第一种情况下,计算智能体和点的相对方向(通过atan2(δy,δx))并取差值。在第二种情况下,将代理与点之间的距离乘以角度差的切线。

请注意,差值必须以360°为模计算,并且必须拒绝大于90°的差值。还要确保使用一致的弧度/度。

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

https://stackoverflow.com/questions/34152462

复制
相关文章

相似问题

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