¿Cómo generar diferentes pantallas 2D en Repast Simphony (GUI o código de estilo?)?

votos
3

He construido un modelo 3D en simphony refrigerio y se está trabajando (bastante) bien. Sin embargo, debido a la naturaleza del modelo, los agentes tienden a formar grupos densos. Me preguntaba si hay una manera de generar una rebanada 2D o sección transversal a través del centro del grupo para ver lo que los agentes están haciendo en el interior de los grupos, ya sea por la generación de una pantalla de 2D actualización continua o una vista de estado final.

He explorado las posibilidades de visualización en la interfaz gráfica de usuario y experimentó con diferentes capas de los agentes, pero debido a la densidad, ninguno de ellos ha funcionado. Habría una manera de alterar este aspecto de la interfaz gráfica de usuario ligeramente para dar una vista 2D (por ejemplo) del plano yz en x = 25 en una cuadrícula 50x50x50.

¡Gracias de antemano por su ayuda!

Publicado el 19/09/2018 a las 17:11
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
2

Puede cambiar la transparencia de las formas en la pantalla 3D cambiando los atributos de transparencia en la clase de estilo basado en un atributo de la visibilidad del agente. Por ejemplo, los agentes pudieron comprobar su posición actual en el espacio 3D y sólo volver isVisible () ocurre cuando el agente está en el plano del espacio desea visualizar. Esto sólo agentes mostrar en la pantalla 3D que existe en el plano definido, que puede ser cualquier x, y, z orientación a través del espacio. En su clase de estilo que tendrá que actualizar la transparencia en el método getAppearance (...) de la siguiente manera:

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;
}

También puede ajustar el valor de transparencia de 0 a 1 para proporcionar diferentes niveles de transparencia, de modo que los agentes de interés son puramente opaco (0.0f) mientras que los agentes en la periferia son muy transparentes (0.8f).

Respondida el 20/09/2018 a las 22:44
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more