在 Anylogic 中检查墙壁是不是存在

Posted

技术标签:

【中文标题】在 Anylogic 中检查墙壁是不是存在【英文标题】:Checking for walls existence in Anylogic在 Anylogic 中检查墙壁是否存在 【发布时间】:2022-01-19 21:16:20 【问题描述】:

我试图让一些代理在它们之间有墙时表现出来,我如何检查 Anylogic 中的代理之间是否存在墙?

【问题讨论】:

【参考方案1】:

我认为没有更简单的方法,所以这就是我所做的: 我所做的是将我所有的墙都保存在一个集合中(arrayList)

然后我检查它们之间是否有墙(假设 person 和 person2 是你的代理,wallList 是包含所有墙的列表)

Point q1=new Point(person1.getX(),person1.getY()); 
Point p1=new Point(person2.getX(),person2.getY()); 
for(Wall wall : wallsList)
    for(int i=0;i<wall.getSegmentCount();i++)
        Point p2=new Point(wall.getSegment(i).getStartX(),wall.getSegment(i).getStartY());
        Point q2=new Point(wall.getSegment(i).getEndX(),wall.getSegment(i).getEndY());
        if(doIntersect(p1, q1, p2, q2))
            return true; // there is a wall
        
    

return false

现在 doIntersect 函数做了什么: 好吧,我从这里复制了它: https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/

【讨论】:

以上是关于在 Anylogic 中检查墙壁是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

检查记录是不是存在,如果它确实加 1(在过程中)

检查按钮是不是存在

检查mysql中是不是存在视图

检查数组 React 中是不是存在项目

检查elasticsearch中是不是存在文档

在 WinRT 中检查项目中是不是存在文件