public boolean hit(Vector3D start, Vector3D direction, double mint, double maxt){//ray = e + td
		Vector3D ec = Vector3D.Substract(start, center);
		double ec2 =Vector3D.DotProduct(ec, ec);
		double d2 = 1;//Length(direction) = 1;
		double ecd = Vector3D.DotProduct(direction, ec);
		double discriminant = ecd * ecd - d2 * (ec2 - radius*radius);
		boolean hit = false;
		if(discriminant > 0){
			double sqrt = Math.sqrt(discriminant);
			double t1 = (-1*ecd - sqrt) / d2;
			double t2 = (-1*ecd + sqrt) / d2;
			if((t1 > mint && t1 < maxt) || (t1 > mint && t2 < maxt)){
				hit = true;
			}
		}
		return hit;
	}