public boolean intersects(Ray ray) { float rhs; Vector3f diff = ray.origin.subtract(getCenter(tempVb), tempVa);  fWdU[0] = ray.getDirection().dot(xAxis); fAWdU[0] = FastMath.abs(fWdU[0]); fDdU[0] = diff.dot(xAxis); fADdU[0] = FastMath.abs(fDdU[0]); if (fADdU[0] > extent.x && fDdU[0] * fWdU[0] >= 0.0) { return false; }  fWdU[1] = ray.getDirection().dot(yAxis); fAWdU[1] = FastMath.abs(fWdU[1]); fDdU[1] = diff.dot(yAxis); fADdU[1] = FastMath.abs(fDdU[1]); if (fADdU[1] > extent.y && fDdU[1] * fWdU[1] >= 0.0) { return false; }  fWdU[2] = ray.getDirection().dot(zAxis); fAWdU[2] = FastMath.abs(fWdU[2]); fDdU[2] = diff.dot(zAxis); fADdU[2] = FastMath.abs(fDdU[2]); if (fADdU[2] > extent.z && fDdU[2] * fWdU[2] >= 0.0) { return false; }  Vector3f wCrossD = ray.getDirection().cross(diff, tempVb);  fAWxDdU[0] = FastMath.abs(wCrossD.dot(xAxis)); rhs = extent.y * fAWdU[2] + extent.z * fAWdU[1]; if (fAWxDdU[0] > rhs) { return false; }  fAWxDdU[1] = FastMath.abs(wCrossD.dot(yAxis)); rhs = extent.x * fAWdU[2] + extent.z * fAWdU[0]; if (fAWxDdU[1] > rhs) { return false; }  fAWxDdU[2] = FastMath.abs(wCrossD.dot(zAxis)); rhs = extent.x * fAWdU[1] + extent.y * fAWdU[0]; if (fAWxDdU[2] > rhs) { return false;  }  return true;
public boolean intersects(BoundingVolume bv) { if (bv==null) return false; else return bv.intersectsOBB2(this);
	public boolean intersects(Ray ray) {		float rhs;		Vector3f diff = ray.origin.subtract(getCenter(tempVb), tempVa);		fWdU[0] = ray.getDirection().dot(xAxis);		fAWdU[0] = FastMath.abs(fWdU[0]);		fDdU[0] = diff.dot(xAxis);		fADdU[0] = FastMath.abs(fDdU[0]);		if (fADdU[0] > extent.x && fDdU[0] * fWdU[0] >= 0.0) {			return false;		}		fWdU[1] = ray.getDirection().dot(yAxis);		fAWdU[1] = FastMath.abs(fWdU[1]);		fDdU[1] = diff.dot(yAxis);		fADdU[1] = FastMath.abs(fDdU[1]);		if (fADdU[1] > extent.y && fDdU[1] * fWdU[1] >= 0.0) {			return false;		}		fWdU[2] = ray.getDirection().dot(zAxis);		fAWdU[2] = FastMath.abs(fWdU[2]);		fDdU[2] = diff.dot(zAxis);		fADdU[2] = FastMath.abs(fDdU[2]);		if (fADdU[2] > extent.z && fDdU[2] * fWdU[2] >= 0.0) {			return false;		}		Vector3f wCrossD = ray.getDirection().cross(diff, tempVb);		fAWxDdU[0] = FastMath.abs(wCrossD.dot(xAxis));		rhs = extent.y * fAWdU[2] + extent.z * fAWdU[1];		if (fAWxDdU[0] > rhs) {			return false;		}		fAWxDdU[1] = FastMath.abs(wCrossD.dot(yAxis));		rhs = extent.x * fAWdU[2] + extent.z * fAWdU[0];		if (fAWxDdU[1] > rhs) {			return false;		}		fAWxDdU[2] = FastMath.abs(wCrossD.dot(zAxis));		rhs = extent.x * fAWdU[1] + extent.y * fAWdU[0];		if (fAWxDdU[2] > rhs) {			return false;		}		return true;	}