function Sphere(cen,rad,col,refl, refr, noise){
	this.Center = new Vector(cen.x,cen.y,cen.z);
	this.radius = rad;
	this.radius2 = rad*rad;
	this.Color = new RGB(col.r,col.g,col.b);

	this.Normal = new Vector(Math.sqrt(3),Math.sqrt(3),Math.sqrt(3));

	this.reflective = refl;
	this.refractive = refr;
	this.noise = noise;
}
Sphere.prototype.getType = function(){ return "sphere"; }
Sphere.prototype.collision = function(ray){
	if((determinant = (B=2*(ray.Direction.x*(dx=ray.Origin.x-this.Center.x)+ray.Direction.y*(dy=ray.Origin.y-this.Center.y)+ray.Direction.z*(dz=ray.Origin.z-this.Center.z)))*B-4*(A=ray.Direction.x*ray.Direction.x+ray.Direction.y*ray.Direction.y+ray.Direction.z*ray.Direction.z)*(dx*dx + dy*dy + dz*dz - this.radius2))<0 || !A) return -1;
	(this.Normal = new Vector(dx+(t=-(B+Math.sqrt(determinant))/(2*A))*ray.Direction.x,dy+t*ray.Direction.y,dz+t*ray.Direction.z)).normalize();
	return t;
}