// Cloud.java // This is the base abstract class for clouds. It defines the geometry of // a cloud and can be used in association with a ScatteringModel sub-class // to model the path of photons being scattered in clouds. import java.awt.*; import java.util.*; public abstract class Cloud { public abstract int Dimension(); public abstract RTVector ScatterAt(RTVector r,RTVector dir); public abstract double OpticalDepth(); // private abstract double OpticalDensity(RTVector r); public abstract boolean IsInCloud(RTVector r); public abstract boolean IsBelowCloud(RTVector r); public abstract RTVector RandomStartLocation(RTVector dir); public abstract void DrawCloud(Panel p); public abstract void DrawPath(Panel p,Vector v); // This function returns the data set being used by the cloud // class. Exactly what the data set does in the cloud model is // determined by the class itself. In most cases it will be a // density profile that can be passed into a Plot2D class for display // and alteration. public abstract DataSet2D GetData(int which); public DataSet2D GetData() { return(GetData(0)); } }