Я пытаюсь смоделировать внутреннюю часть эпителиального пространства и застреваю при движении по внутренним краям цилиндрического пространства.По сути, я пытаюсь реализовать StickyBorders и держать агентов на тех границах в цилиндрическом пространстве, которое я создаю.
Есть ли способ использовать цилиндрические координаты в Repast Simphony?Я нашел этот пример (https://www.researchgate.net/publication/259695792_An_Agent-Based_Model_of_Vascular_Disease_Remodeling_in_Pulmonary_Arterial_Hypertension), где они, кажется, сделали что-то похожее, но в статье не объясняются методы очень подробно, и я не верю, что это пример в моделях repast Simphony.
В настоящее время у меня есть класс эпителиальных клеток, которые настроены на формирование цилиндра, и другие агенты запускаются прямо внутри этого цилиндра. Чтобы двигаться, они выбирают свое наиболее желаемое место (похожее на код Зомби) и затем указываютновое местоположение в направлении этого желаемого местоположения в пределах одного квадрата сетки этого первоначального местоположения. Они проверяют эту новую точку перед тем, как перейти к ней, и проверяют наличие как минимум двух других эпителиальных клеток в непосредственной близости от Мура, чтобы убедиться, что они остаютсяпротив стены.
GridPoint intendedpt = new GridPoint((int)Math.rint(alongX),(int)Math.rint(alongY),(int)Math.rint(alongZ));
GridCellNgh<EpithelialCell> nearEpithelium = new GridCellNgh<EpithelialCell>(mac_grid, intendedpt, EpithelialCell.class, 1,1,1);
List<GridCell<EpithelialCell>> EpiCells = nearEpithelium.getNeighborhood(false);
int nearbyEpiCellsCount=0;
for (GridCell<EpithelialCell> cell: EpiCells) {
nearbyEpiCellsCount++;
}
if (nearbyEpiCellsCount<2) {
System.out.println(this + " leaving epithelial wall /r");
RunEnvironment.getInstance().pauseRun();
//TODO: where to go if false
}
Мне интересно, есть ли способ установить границы пространства для цилиндра или проверить, какая сторона агента находится у стены и ограничить его движение вэто направление.