\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
\section{Barycentric Coordinates}

Barycentric coordinates enable you to evenly interpolate between three values among the verticies of a triangle.

\def\xa{0} \def\ya{0}
\def\xb{1} \def\yb{2}
\def\xc{3} \def\yc{-1}
\def\xp{1} \def\yp{0.25}
\begin{center}
\begin{tikzpicture}
  \draw[gray, thick] (\xa,\ya) -- (\xb,\yb);
  \draw[gray, thick] (\xb,\yb) -- (\xc,\yc);
  \draw[gray, thick] (\xc,\yc) -- (\xa,\ya);
  \draw[gray, thick, dotted] (\xa,\ya) -- (\xp,\yp);
  \draw[gray, thick, dotted] (\xb,\yb) -- (\xp,\yp);
  \draw[gray, thick, dotted] (\xc,\yc) -- (\xp,\yp);
  \filldraw[black] (\xa,\ya) circle (2pt) node[anchor=west]{$v_1$};
  \filldraw[black] (\xb,\yb) circle (2pt) node[anchor=west]{$v_2$};
  \filldraw[black] (\xc,\yc) circle (2pt) node[anchor=west]{$v_3$};
  \filldraw[black] (\xp,\yp) circle (2pt) node[anchor=west]{$p$};
\end{tikzpicture}
\end{center}

\begin{align}
  U &= (u_1, u_2, u_3) \\
  v_1 &= (x_1, y_1) \\
  v_2 &= (x_2, y_2) \\
  v_3 &= (x_3, y_3) \\
  p   &= (x_p, y_p)
\end{align}

The Barycentric coordinates can be defined in terms of the following relationships:

\begin{align}
  \begin{cases}
  & u_1 + u_2 + u_3 = 1 \\
  & u_1x_1 + u_2x_2 + u_3x_3 = x_p \\
  & u_1y_1 + u_2y_2 + u_3y_3 = y_p
  \end{cases}
\end{align}


Let's reduce the amount of variables in these equations:

\begin{align}
  & u_3 = 1 - u_1 - u_2 \\
  & \begin{cases}
    u_1(x_1 - x_3) + u_2(x_2 - x_3) &= x_p - x_3 \\
    u_1(y_1 - y_3) + u_2(y_2 - y_3) &= y_p - y_3 \\
  \end{cases}
\end{align}

Now we can turn the system of equations into matrix form:

\begin{align}
  & T =
  \begin{bmatrix}
    x_1 - x_3 & x_2 - x_3 \\
    y_1 - y_3 & y_2 - y_3 \\
  \end{bmatrix} \\
  & U = \begin{bmatrix}
    u1 \\ u2 \\
  \end{bmatrix}\\
  & R = \begin{bmatrix}
    x_p - x_3 \\
    y_p - y_3 \\
  \end{bmatrix} \\
  & T \cdot U = R
\end{align}

So the solution is

\begin{align}
  U = T^{-1} \cdot R
\end{align}

The main effort goes towards finding $T^{-1}$

\begin{align}
  & T^{-1} = \frac{adj(T)}{det(T)} \\
  & det(T) = (x_1 - x_3)(y_2 - y_3) - (x_2 - x_3)(y_1 - y_3) \\
  & adj(T) = \begin{bmatrix}
    y_2 - y_3 & x_3 - x_2 \\
    y_3 - y_1 & x_1 - x_3 \\
  \end{bmatrix} \\
  & T^{-1} = \frac{1}{det(T)} \cdot \begin{bmatrix}
    y_2 - y_3 & x_3 - x_2 \\
    y_3 - y_1 & x_1 - x_3 \\
  \end{bmatrix} \\
  & T^{-1}\cdot R = \frac{1}{det(T)} \cdot \begin{bmatrix}
    (y_2 - y_3)(x_p - x_3) + (x_3 - x_2)(y_p - y_3) \\
    (y_3 - y_1)(x_p - x_3) + (x_1 - x_3)(y_p - y_3) \\
  \end{bmatrix}
\end{align}

And the final formula you need to find $(u_1, u_2, u_3)$ given the points $v_1, v_2, v_3, p$~is

\begin{align}
  u_1 &= \frac{(y_2 - y_3)(x_p - x_3) + (x_3 - x_2)(y_p - y_3)}{(x_1 - x_3)(y_2 - y_3) - (x_2 - x_3)(y_1 - y_3)} \\
  u_2 &= \frac{(y_3 - y_1)(x_p - x_3) + (x_1 - x_3)(y_p - y_3)}{(x_1 - x_3)(y_2 - y_3) - (x_2 - x_3)(y_1 - y_3)} \\
  u_3 &= 1 - u_2 - u_1
\end{align}

\end{document}

