// 3D Engine // // Light for illuminating the universe. // // Author Matthew Caryl // Created 10.5.97 // // Although under copywrite to the author (Matthew Caryl) this code can be copied and modified for non-commercial // purposes as long as any derivatives contain this condition. package ADT; import java.awt.Color; public class Light extends Entity { // // Public interface // public Light(float ambient, float diffuse) { light_vector = new Vector(x, y, z); setLevel(ambient, diffuse); } public Light(Vector[] vs, int[] ts, Color[] cs, Entity[] children, float ambient, float diffuse) { super(vs, ts, cs, children); light_vector = new Vector(x, y, z); setLevel(ambient, diffuse); } public void setLevel(float ambient, float diffuse) { ambient_light = ambient; diffuse_light = diffuse; } public float getAmbient() { return ambient_light; } public float getDiffuse() { return diffuse_light; } // // Package interface // void setUniverse(Universe U) { universe = U; universe.relight(light_vector, ambient_light, diffuse_light); } // // Protected interface // protected void transformCorrection() { transform_matrix.setRotate(ax, ay, az); transform_matrix.translateBy(x, y, z); light_vector.set(x, y, z); if (universe != null) universe.relight(light_vector, ambient_light, diffuse_light); } // // Private interface // private float ambient_light; private float diffuse_light; private Vector light_vector; private Universe universe; }