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

如何在Repast Simphony(gui或样式代码?)中生成不同的2D显示?

卜存
2023-03-14

我在repast simphony中建立了一个3D模型,它运行(相当)良好。然而,由于模型的性质,代理往往会形成密集的团块。我想知道是否有一种方法可以通过生成一个不断更新的2D显示或一个结束状态视图来生成一个穿过簇中间的2D切片或横截面,以查看代理在簇内做什么。

我探索了gui中的显示选项,并尝试了不同层次的代理,但由于密度,这些都不起作用。是否有办法稍微改变gui的这一方面,以在50x50x50网格中提供x=25的yz平面的二维视图(例如)。

提前感谢您的帮助!

共有1个答案

梅修贤
2023-03-14

您可以通过根据代理的可见性属性更改样式类中的透明度属性来更改3D显示中形状的透明度。例如,您的代理可以检查它们在3D空间中的当前位置,并且仅当代理位于您想要可视化的空间平面时才返回isViable()true。这将仅显示3D显示中存在于您定义的平面上的代理,该平面可以是通过空间的任何x、y、z方向。在您的样式类中,您需要更新get外观(...)方法中的透明度,如下所示:

public TaggedAppearance getAppearance(MyAgent agent, TaggedAppearance taggedAppearance, Object shapeID) {
    if (taggedAppearance == null) {
        taggedAppearance = new TaggedAppearance();

    // Customize your agent style here...           

     AppearanceFactory.setMaterialAppearance(taggedAppearance.getAppearance(), Color.white);
    }


    if (trans == null) { 
        trans = new TransparencyAttributes();
        trans.setCapability(TransparencyAttributes.ALLOW_VALUE_READ);
        trans.setCapability(TransparencyAttributes.ALLOW_VALUE_WRITE);
        trans.setCapability(TransparencyAttributes.ALLOW_MODE_READ);
        trans.setCapability(TransparencyAttributes.ALLOW_MODE_WRITE);
        trans.setTransparencyMode(TransparencyAttributes.FASTEST);
        taggedAppearance.getAppearance().setTransparencyAttributes(trans);
    }

    if (agent.isVisible())
        trans.setTransparency(0.0f);
    else 
        trans.setTransparency(1.0f);

    return taggedAppearance;
}

您还可以将透明度值从0调整到1以提供不同级别的透明度,以便感兴趣的代理是纯粹不透明的(0.0f),而外围的代理非常透明(0.8f)。

 类似资料:
  • 我有一个Maven插件,它为我的java项目生成源代码,并将它们放在“target/generated sources”文件夹中。我在编译时需要这些源代码。我想在我的项目中有它们,同时修改它,已经生成。当然,我想把它们放在“src”文件夹下的正确文件夹中,而不是放在“target/generated sources”文件夹中。我如何使用Maven来组织它? 换句话说,我希望能够: > 通过运行我的

  • 有没有一个包生成PDF(与样式)从网页与拉维勒。我尝试使用barryvdh/laravel-dompdf,但是PDF没有样式化。Laravel有没有更好的解决方案

  • 新安装Eclipse Mars.1,从市场上安装代号一,新安装运行在OSX 10.9.4上的Java1.8。 Eclipse和项目本身设置为在所有编译中使用Java1.8,我还更改了构建中的设置。xml将1.8设置为要使用的版本。 当我试图通过右键单击项目标题并选择“新建/其他”并选择gui builder来添加gui builder页面时,请单击“下一步” 在谷歌搜索错误,但与代号1无关。 任何

  • 用Java编写的现有系统使用字符串的哈希代码作为负载平衡的路由策略。 现在,我无法修改系统,但需要生成共享相同哈希代码的字符串来测试最坏的情况。 我从命令行提供这些字符串,并希望系统将所有这些字符串路由到同一个目的地。 有可能生成大量共享相同哈希代码的字符串吗? 为了明确这个问题: 备注:任何hashCode值均可接受。对字符串是什么没有限制。但它们应该彼此不同。 编辑:不接受String类的重写

  • 问题内容: 我的问题是我的ListView没有在GUI上显示任何内容,我添加了一个占位符进行测试,它的确显示了占位符文本,但除此之外我无法添加到列表中。 我的目标是要列出我所有客户帐户的列表,我已经包含了Account类,我想在ListView中显示所有帐户ID。 由于某些原因,它不起作用,我尝试仅输入随机数据只是为了查看是否是问题所在,但仍然不走运。 我的Main.class文件中有一个名为al