if (kQ0.dot(kQ1) < 0.00001f)
if (kQ0.dot(kQ1) < 0.0f)
    private BoundingVolume mergeOBB(OrientedBoundingBox volume) {        // OrientedBoundingBox mergeBox=(OrientedBoundingBox) volume;        // if (!correctCorners) this.computeCorners();        // if (!mergeBox.correctCorners) mergeBox.computeCorners();        // Vector3f[] mergeArray=new Vector3f[16];        // for (int i=0;i<vectorStore.length;i++){        // mergeArray[i*2+0]=this .vectorStore[i];        // mergeArray[i*2+1]=mergeBox.vectorStore[i];        // }        // containAABB(mergeArray);        // correctCorners=false;        // return this;        // construct a box that contains the input boxes        // Box3<Real> kBox;        OrientedBoundingBox rkBox0 = this;        OrientedBoundingBox rkBox1 = volume;        // The first guess at the box center. This value will be updated later        // after the input box vertices are projected onto axes determined by an        // average of box axes.        Vector3f kBoxCenter = (rkBox0.center.add(rkBox1.center, _compVect7))                .multLocal(.5f);        // A box's axes, when viewed as the columns of a matrix, form a rotation        // matrix. The input box axes are converted to quaternions. The average        // quaternion is computed, then normalized to unit length. The result is        // the slerp of the two input quaternions with t-value of 1/2. The        // result        // is converted back to a rotation matrix and its columns are selected        // as        // the merged box axes.        Quaternion kQ0 = tempQa, kQ1 = tempQb;        kQ0.fromAxes(rkBox0.xAxis, rkBox0.yAxis, rkBox0.zAxis);        kQ1.fromAxes(rkBox1.xAxis, rkBox1.yAxis, rkBox0.zAxis);        if (kQ0.dot(kQ1) < 0.00001f)            kQ1.negate();        Quaternion kQ = kQ0.addLocal(kQ1);        float fInvLength = FastMath.invSqrt(kQ.dot(kQ));        kQ.multLocal(fInvLength);        Matrix3f kBoxaxis = kQ.toRotationMatrix(tempMa);        kBoxaxis.getColumn(0, xAxis);        kBoxaxis.getColumn(1, yAxis);        kBoxaxis.getColumn(2, zAxis);        // Project the input box vertices onto the merged-box axes. Each axis        // D[i] containing the current center C has a minimum projected value        // pmin[i] and a maximum projected value pmax[i]. The corresponding end        // points on the axes are C+pmin[i]*D[i] and C+pmax[i]*D[i]. The point C        // is not necessarily the midpoint for any of the intervals. The actual        // box center will be adjusted from C to a point C' that is the midpoint        // of each interval,        // C' = C + sum_{i=0}^1 0.5*(pmin[i]+pmax[i])*D[i]        // The box extents are        // e[i] = 0.5*(pmax[i]-pmin[i])        int i;        float fDot;        Vector3f kDiff = _compVect4;        Vector3f kMin = _compVect5;        Vector3f kMax = _compVect6;        kMin.zero();        kMax.zero();        if (!rkBox0.correctCorners)            rkBox0.computeCorners();        for (i = 0; i < 8; i++) {            rkBox0.vectorStore[i].subtract(kBoxCenter, kDiff);            fDot = kDiff.dot(xAxis);            if (fDot > kMax.x)                kMax.x = fDot;            else if (fDot < kMin.x)                kMin.x = fDot;            fDot = kDiff.dot(yAxis);            if (fDot > kMax.y)                kMax.y = fDot;            else if (fDot < kMin.y)                kMin.y = fDot;            fDot = kDiff.dot(zAxis);            if (fDot > kMax.z)                kMax.z = fDot;            else if (fDot < kMin.z)                kMin.z = fDot;        }        if (!rkBox1.correctCorners)            rkBox1.computeCorners();        for (i = 0; i < 8; i++) {            rkBox1.vectorStore[i].subtract(kBoxCenter, kDiff);            fDot = kDiff.dot(xAxis);            if (fDot > kMax.x)                kMax.x = fDot;            else if (fDot < kMin.x)                kMin.x = fDot;            fDot = kDiff.dot(yAxis);            if (fDot > kMax.y)                kMax.y = fDot;            else if (fDot < kMin.y)                kMin.y = fDot;            fDot = kDiff.dot(zAxis);            if (fDot > kMax.z)                kMax.z = fDot;            else if (fDot < kMin.z)                kMin.z = fDot;        }        this.extent.x = .5f * (kMax.x - kMin.x);        kBoxCenter.addLocal(this.xAxis.mult(.5f * (kMax.x + kMin.x), tempVe));        this.extent.y = .5f * (kMax.y - kMin.y);        kBoxCenter.addLocal(this.yAxis.mult(.5f * (kMax.y + kMin.y), tempVe));        this.extent.z = .5f * (kMax.z - kMin.z);        kBoxCenter.addLocal(this.zAxis.mult(.5f * (kMax.z + kMin.z), tempVe));        this.center.set(kBoxCenter);        this.correctCorners = false;        return this;    }