code: public static void tangent(Vector3fc v1, Vector2fc uv1, Vector3fc v2, Vector2fc uv2, Vector3fc v3, Vector2fc uv3, Vector3f dest) {
          float DeltaV1 = uv2.y() - uv1.y();
          float DeltaV2 = uv3.y() - uv1.y();
  
          float f = 1.0f / ((uv2.x() - uv1.x()) * DeltaV2 - (uv3.x() - uv1.x()) * DeltaV1);
  
          dest.x = f * (DeltaV2 * (v2.x() - v1.x()) - DeltaV1 * (v3.x() - v1.x()));
          dest.y = f * (DeltaV2 * (v2.y() - v1.y()) - DeltaV1 * (v3.y() - v1.y()));
          dest.z = f * (DeltaV2 * (v2.z() - v1.z()) - DeltaV1 * (v3.z() - v1.z()));
          dest.normalize();
      }
docs: Calculate the surface tangent for the three supplied vertices and UV coordinates and store the result in <code>dest</code>.
  
  @param v1
  XYZ of first vertex
  @param uv1
  UV of first vertex
  @param v2
  XYZ of second vertex
  @param uv2
  UV of second vertex
  @param v3
  XYZ of third vertex
  @param uv3
  UV of third vertex
  @param dest
  the tangent will be stored here