有没有办法构造一个函数来获取多个上层代理中存在的子代理的主坐标?

Posted

技术标签:

【中文标题】有没有办法构造一个函数来获取多个上层代理中存在的子代理的主坐标?【英文标题】:Is there a way to construct a single function to get the coordinates in main of a sub-agent that is present in multiple upper-level agents? 【发布时间】:2022-01-06 12:54:00 【问题描述】:

当代理是多个其他代理的下级代理时,是否有一种直接的方法来获取代理相对于main 的坐标点?

例如:

我有一个 Box 代理。 我的ShelfPallet 代理中都有Box 代理,Pallet 代理可以位于mainRack 代理中。

所以我有:

main > Shelf > Box

main > Pallet > Box

main > Rack > Pallet > Box

到目前为止,我已经创建了单独的硬编码函数,这些函数将 Box 的坐标与其上层代理的坐标相加。

所以:

对于货架托盘中的箱子:CoordBoxInMain = CoordBox + CoordPallet + CoordRack

对于货架上的箱子:CoordBoxInMain = CoordBox + CoordShelf

但现在我想知道,有没有一种方法可以构建一个函数,直接获取我的Box 代理的坐标,而不必创建多个不同的函数,每个函数都引用不同的上层代理序列?

谢谢。

【问题讨论】:

【参考方案1】:

你可以使用这段小代码

Agent agent = myBox;
double xCoord = agent.getX();
while (agent.getOwner() != null) 
    xCoord += agent.getOwner().getX();
    agent = agent.getOwner();


traceln(xCoord);

它将继续寻找代理的所有者,直到它到达主代理(或您的根代理)并添加 X 坐标,然后跟踪它

你也需要对 Y 和 Z 做同样的事情

我在一个简单的模型上对其进行了测试,它可以工作

【讨论】:

惊人的小sn-p代码,我没有想到这么简单的解决方案真是令人沮丧。所有这些时间都浪费在编写冗余函数上。谢谢你,Jaco-Ben。 请注意,这仅在所有代理的规模相同时才有效(或者更确切地说是给出有意义的值)。更一般地,您应该根据比例进行调整,以便给定 Main 的比例(或任何您的“目标”封闭代理),结果是正确的(以像素为单位)。

以上是关于有没有办法构造一个函数来获取多个上层代理中存在的子代理的主坐标?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法更改 Visual Studio 中 IntelliSense 中列出的构造函数的顺序?

继承中的构造函数

java构造函数

有没有办法在javascript中代理(拦截)类的所有方法?

有没有办法绕过 C++ 构造函数?

构造函数