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