GwieF.com : Project : Classes : Material
logo

Material.java


package com.gwief.jTrace;

/*
    Material.java by Damian Newport
    Stores the values needed to calculat ethe apperence of a shapes surface
*/

public class Material {

    public double transparency;     // how transparent (0 - 1)
    public double reflect;          // how much light gets reflected (0-1)
    public double Ks;               // specular coefficient
    public double n;                // shineyness
    public double Kd;               // diffuse coefficient
    public double density;          // how dense a materal is (0 - 1);
    public Color3D color;           // the color of the shape
    
    
    /** Creates new Material */
    public Material() {
        color = new Color3D(1,1,1);   // default = black
        transparency = 0;             // default = not transparent
        reflect = 0;                  // default = no reflection
        Ks = 1;                       // default = max specular lighting
        n = 1;                        // default = not very shiney
        Kd = 1;                       // default = max diffse lighting
        density = 1;                  // default = density of vacum (no refraction)
    }

    public Material(Color3D colour, double tranparence, double reflectivity,
                     double ks, double shine, double kd, double dense){
        color = colour;
        transparency = tranparence;
        reflect = reflectivity;
        Ks = ks;
        n = shine;
        Kd = kd;
        density = dense;
    }
    
    public final Color3D getcolor(){return color; }
    public final double getreflect(){return reflect; }
    public final double gettransparency(){return transparency; }
    public final double getKs(){return Ks; }
    public final double getn(){return n; }
    public final double getKd(){return Kd; }
    public final double getdensity(){return density; }
    
    public final void setcolor(Color3D a){ color = new Color3D(a); }
    public final void setcolor(double r, double g, double b){ color = new Color3D(r,g,b); }
    public final void setreflect(double a){ reflect = standify(a); }
    public final void settransparency(double a){ transparency = standify(a); }
    public final void setKs(double a){ Ks = standify(a); }
    public final void setn(double a){ n = a; }
    public final void setKd(double a){ Kd = standify(a); }
    public final void setdensity(double a){density = a; }
    
    /* makes sure the value is 0 - 1 */
    private final double standify(double a){
        if(a>1){a = 1;}
        else if (a<0){a=0;}
        return a;
    }
}