public HitRecord hitNearestPoint(Vector3D start, Vector3D direction, double mint, double maxt){
		//A : A surface but not inside B
		//B : B surface but not inside A
		//C : C surface but inside B
		HitRecord record = null;
		double maxDistance = maxt;
		HitRecord recordA = A.hitNearestPoint(start, direction, mint, maxt);
		if(recordA != null && B.isInside(recordA.getHitPt()) == false){
			record = recordA;
			maxDistance = record.getDistance();
		} 
		HitRecord recordB = B.hitNearestPoint(start, direction, mint, maxDistance);
		if(recordB != null && A.isInside(recordB.getHitPt()) == false){
			record = recordB;
			maxDistance = record.getDistance();
		}
		HitRecord recordC = C.hitNearestPoint(start, direction, mint, maxDistance);
		if(recordC != null && B.isInside(recordC.getHitPt()) == true){
			record = recordC;
			maxDistance = record.getDistance();
		}
		
		return record;
	}