【发布时间】:2022-01-19 21:16:20
【问题描述】:
我试图让一些代理在它们之间有墙时表现出来,我如何检查 Anylogic 中的代理之间是否存在墙?
【问题讨论】:
标签: anylogic
我试图让一些代理在它们之间有墙时表现出来,我如何检查 Anylogic 中的代理之间是否存在墙?
【问题讨论】:
标签: anylogic
我认为没有更简单的方法,所以这就是我所做的: 我所做的是将我所有的墙都保存在一个集合中(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/
【讨论】: