当前位置: 首页 > 知识库问答 >
问题:

在Repast Simphony中创建圆柱形空间?

滑景胜
2023-03-14

我试图对上皮细胞空间的内部进行建模,但我被困在圆柱形空间内部边缘的运动中。基本上,我正在尝试实现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
        }

我想知道是否有办法将空间的边界设置为圆柱体,或者检查代理的哪一侧紧靠墙,并限制其在该方向的移动。

共有2个答案

濮金鑫
2023-03-14

我们在该模型中采用的方法是使用带有自定义边框和查询方法的三维网格空间。空间本身仍然是笛卡尔的——我们只是使用自定义显示代码将其可视化为圆柱体。对于这种应用,使用笛卡尔网格是一种合理的近似方法,因为单元尺寸明显小于血管半径,因此曲率效应被忽略。血管空间上的边界条件以角度尺寸环绕,因此细胞可以围绕血管圆周连续移动,轴向边界条件也被环绕,因为我们假设血管长度足够长,这是合理的。壁厚尺寸在基膜(y=0)和流体界面(y=壁厚)处有硬边界。

根据使用的空间类型,需要实现执行边界函数的PointTranslator或GridPointTranslator。如果你想知道具体的代码示例,我建议你直接联系作者的。

杜诚
2023-03-14

粘性边框代码(StickyBorders.java)本质上只是检查代理移动到的点是否超出了空间的任何维度,如果是这样,则该点被钳制到该维度。因此,例如,如果空间是3x4并且代理的移动会将其带到4,2,那么该点变为3,2并且代理被放置在那里。在这种情况下,您可以做类似的事情吗?如果没有,您可以编辑您的问题以解释为什么不,也许这将帮助我们更好地理解。

 类似资料:
  • 问题内容: 我想制作一个圆形的大拇指和大拇指向下的按钮。 我应该使用ImageView还是Button作为超类? 我将如何在Swift中做到这一点? 问题答案: 这是一个圆形按钮示例: 斯威夫特3: Swift 2.x:

  • 我正在尝试在我的游戏中实现重力。我目前有一个月球,它应该绕着一颗行星运行(在我的游戏中都使用了细胞类)。 使用以下代码(缩短): 在类单元格中: 在类重力场中: 因此,对于我的重力场,我基本上将拖动向量应用于拉动的单元格。 在细胞中,细胞被移动到重力器上 并朝着自己的运动方向 在我的 orbit() 方法中,我试图找到并设置 vel 以形成一个圆形轨道。 我的问题是我无法找到一个完美的轨道。月球仍

  • 我想将方形图像转换为圆形图像,但当我应用“边框半径:50px”时,它给了我椭圆形的形状。我尝试了很多东西,但都不起作用。任何帮助都将不胜感激。这是我的超文本标记语言代码- <代码> 这是我的CSS代码- 这是我的图片在网站上的样子。我希望它们有一个圆形。

  • threejs,如何创建一个半圆环柱体?半径50。 就是我需要创建的素材是:半圆环柱体。 红色区域这样的圆环

  • 如何将转换为带有圆边的按钮?我使用获得了圆角边框形状,但不知怎么需要给边框着色。

  • 对于我的程序,我想让两个椭圆重叠,然后从重叠区域创建一个新形状。这样我以后可以将生成的形状与另一个形状再次组合。 最后,我想把结果,然后颜色不同。您可以想象得到的图像是一组椭圆形,其中只有某些部分的颜色不同。 我试图用来做这件事,但是我真的不知道如何创建这个新形状作为某种对象。我知道有一个叫做的方法,但是按照我的理解,它只检查形状是否与矩形相交。