All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sim.portrayal3d.inspector.StableDouble3D Maven / Gradle / Ivy

Go to download

MASON is a fast discrete-event multiagent simulation library core in Java, designed to be the foundation for large custom-purpose Java simulations, and also to provide more than enough functionality for many lightweight simulation needs. MASON contains both a model library and an optional suite of visualization tools in 2D and 3D.

The newest version!
package sim.portrayal3d.inspector;
import sim.util.*;
import sim.field.*;
import sim.field.grid.*;
import sim.field.continuous.*;
import sim.portrayal.inspector.*;

/**
   StableDouble3D is a StableLocation for Double3D.  It can be used with either 2D or 3D fields.  See StableLocation for more information.
*/

public class StableDouble3D implements StableLocation
    {
    public double x = 0;
    public double y = 0;
    public double z = 0;
    public boolean exists = false;
    public SparseField field;
    public Object object;

    public String toString()
        {
        if (!exists) return "Gone";
        else return "(" + x + ", " + y + ", " + z + ")"; 
        }
        
    public StableDouble3D(Continuous2D field, Object object)
        {
        this.field = field;
        this.object = object;
        update();
        }
        
    public StableDouble3D(Continuous3D field, Object object)
        {
        this.field = field;
        this.object = object;
        update();
        }
        
    public void update()
        {
        Double3D pos = null;
        if (field == null) return;
        if (field instanceof Continuous2D)
            pos = new Double3D(((Continuous2D)field).getObjectLocation(object));
        else
            pos = ((Continuous3D)field).getObjectLocation(object);
        
        if (pos == null) { exists = false; }  // purposely don't update x and y and z so they stay the same
        else { x = pos.x; y = pos.y; z = pos.z; exists = true; }
        }

    /* For some reason, the order of the parameters in the MASON windows will be Z, Exists, Y, X.  Oh well! */
    public double getX() { return x; }
    public double getY() { return y; }
    public double getZ() { return z; }
    public boolean getExists() { return exists; }  // what an ugly name

    public void setX(double val)
        {
        x = val;
        if (field == null) return;
        if (field instanceof Continuous2D)
            { ((Continuous2D)field).setObjectLocation(object, new Double2D(x,y));  z = 0; }
        else ((Continuous3D)field).setObjectLocation(object, new Double3D(x,y,z));
        }
            
    public void setY(double val)
        {
        y = val;
        if (field == null) return;
        if (field instanceof Continuous2D)
            { ((Continuous2D)field).setObjectLocation(object, new Double2D(x,y));  z = 0; }
        else ((Continuous3D)field).setObjectLocation(object, new Double3D(x,y,z));
        }
            
    public void setZ(double val)
        {
        z = val;
        if (field == null) return;
        if (field instanceof Continuous2D)
            { ((Continuous2D)field).setObjectLocation(object, new Double2D(x,y));  z = 0; }
        else ((Continuous3D)field).setObjectLocation(object, new Double3D(x,y,z));
        }
    }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy