Algoritmo para la intersección de 2 líneas?

Tengo 2 lineas. Ambas líneas contienen sus 2 puntos de X e Y. Esto significa que ambas tienen longitud.

Veo 2 fórmulas, una con determinantes y otra con álgebra normal. ¿Cuál sería el más eficiente de calcular y cómo se ve la fórmula?

Me está costando usar matrices en código.

Esto es lo que tengo hasta ahora, ¿puede ser más eficiente?

public static Vector3 Intersect(Vector3 line1V1, Vector3 line1V2, Vector3 line2V1, Vector3 line2V2)
{
    //Line1
    float A1 = line1V2.Y - line1V1.Y;
    float B1 = line1V2.X - line1V1.X;
    float C1 = A1*line1V1.X + B1*line1V1.Y;

    //Line2
    float A2 = line2V2.Y - line2V1.Y;
    float B2 = line2V2.X - line2V1.X;
    float C2 = A2 * line2V1.X + B2 * line2V1.Y;

    float det = A1*B2 - A2*B1;
    if (det == 0)
    {
        return null;//parallel lines
    }
    else
    {
        float x = (B2*C1 - B1*C2)/det;
        float y = (A1 * C2 - A2 * C1) / det;
        return new Vector3(x,y,0);
    }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta