在 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 中检查墙壁是不是存在的主要内容,如果未能解决你的问题,请参考以下文章