private Vector3f getNormal(Vector3f firstPoint, Vector3f rootPoint, Vector3f secondPoint, Vector3f scale, Vector3f store) {
        float x1 = firstPoint.x - rootPoint.x;
        float y1 = firstPoint.y - rootPoint.y;
        float z1 = firstPoint.z - rootPoint.z;
        x1 *= scale.x;
        y1 *= scale.y;
        z1 *= scale.z;
        float x2 = secondPoint.x - rootPoint.x;
        float y2 = secondPoint.y - rootPoint.y;
        float z2 = secondPoint.z - rootPoint.z;
        x2 *= scale.x;
        y2 *= scale.y;
        z2 *= scale.z;
        float x3 = (y1 * z2) - (z1 * y2);
        float y3 = (z1 * x2) - (x1 * z2);
        float z3 = (x1 * y2) - (y1 * x2);
        
        float inv = 1.0f / FastMath.sqrt(x3 * x3 + y3 * y3 + z3 * z3);
        store.x = x3 * inv;
        store.y = y3 * inv;
        store.z = z3 * inv;
        
        
        /*firstPoint.multLocal(scale);
        rootPoint.multLocal(scale);
        secondPoint.multLocal(scale);
        firstPoint.subtractLocal(rootPoint);
        secondPoint.subtractLocal(rootPoint);
        firstPoint.cross(secondPoint, store);*/
        return store;
    }
@param v Takes 3 vertices: root, right, bottom
@param t Takes 3 tex coords: root, right, bottom
@param tangent that will store the result
@return the tangent store
jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/LODGeomap.java