# Calculate the Tangent Line of a Circle

Given a circle with it's center point $$M$$, the radius $$r$$ and an angle $$\alpha$$ of the radius line, how can one calculate the tangent line on the circle in point $$T$$? The trick is, that the radius line and the tangent line are perpendicular. This means, that their dot-product must be zero.

So, how can this schematic be derived? The intersection point $$T$$ is the center point $$M$$ plus the radius in the direction of the angle:

$T = \left(\begin{array}{c}T_x\\T_y\end{array}\right) = M + r \cdot \left(\begin{array}{c}\sin\alpha\\\cos\alpha\end{array}\right)$

Now we need to rotate the vector by 90° in order to get a vector that is perpendicular to the radius line:

$\vec{v} = \left(\begin{array}{cc}0 & 1\\-1 & 0\end{array}\right) \cdot \vec{MT}$

Which leads to the line equation:

$L(s) = T + s \cdot \frac{\vec{v}}{|\vec{v}|}$

The implementation is therefore also quite simple:

function tangentLine(M, r, alpha) {

T = {
x: M.x + Math.cos(alpha) * r,
y: M.y + Math.sin(alpha) * r
}

v = {
x: T.y - M.y,
y: M.x - T.x
}

norm = Math.hypot(v.x, v.y)
v.x/= norm
v.y/= norm

return [T, v]
}

You might also be interested in the following