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

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

【问题讨论】:

    标签: 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      • 2018-03-22
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多