protected void setNormalRecalcNeeded(Vector2f changedPoint) {
        if (changedPoint == null) { // set needToRecalculateNormals() to false
            affectedAreaBBox = null;
            return;
        }
        
        Vector2f worldLocVec2 = changedPoint.clone();
        worldLocVec2.multLocal(new Vector2f(getWorldScale().x, getWorldScale().z));
        worldLocVec2.addLocal(getWorldTranslation().x, getWorldTranslation().z);		
        changedPoint = worldLocVec2;

        Quaternion wr = getWorldRotation();
        if (wr.getX() != 0 || wr.getY() != 0 || wr.getZ() != 0) {
            BoundingVolume bv = getWorldBound();
            if (bv instanceof BoundingSphere) {
                BoundingSphere bs = (BoundingSphere) bv;
                float r = bs.getRadius();
                Vector3f center = bs.getCenter();
                affectedAreaBBox = new BoundingBox(center, r, r, r);
            } else {
                affectedAreaBBox = (BoundingBox) bv.clone();
            }            
            return;
        }
        
        if (affectedAreaBBox == null) {
            affectedAreaBBox = new BoundingBox(new Vector3f(changedPoint.x, 0, changedPoint.y), 1f, Float.MAX_VALUE, 1f); // unit length
        } else {
            // adjust size of box to be larger
            affectedAreaBBox.mergeLocal(new BoundingBox(new Vector3f(changedPoint.x, 0, changedPoint.y), 1f, Float.MAX_VALUE, 1f));
        }
    }
Signal if the normal vectors for the terrain need to be recalculated.
Does this by looking at the affectedAreaBBox bounding box. If the bbox
exists already, then it will grow the box to fit the new changedPoint.
If the affectedAreaBBox is null, then it will create one of unit size.

@param changedPoint a location to include
jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainQuad.java