# How to “shrink” a triangle

Given any triangle (vertices are known) and a distance X, how can I compute the triangle that is shrunk by X from the original? By shrink, I mean edges of the shrunk triangle are exactly X away from the original edges. So if X is large enough, the shrunk triangle doesn't exist.

EDIT: the resulting triangle needs to be inside the given triangle.

Attaching a picture for clarity.

-
Take the lines that join the vertices with the middle of the opposite sides; they will all intersect at a point $p$. inside the triangle. You want to "shift" the sides a distance $X$ along those lines. But how one describes this depends on how you are "given" the triangle. Are you able to translate it on the plane? Are you given the coordinates of the vertices, the equations of the lines? – Arturo Magidin Jan 15 '11 at 4:55
I have the 3 triangle vertices given, and I would like to output 3 vertices. By P do you mean the centroid? – Morrowless Jan 15 '11 at 5:04
What you want is not what I described. – Arturo Magidin Jan 15 '11 at 5:14

Green triangle (result) is obviously a homothety of the given (blue) triangle with respect to a certain point Q inside the triangle, and a certain coefficient k. As you wish to find Q and k providing the distance X from the original edges, then the direction of the moveout of the vertices lays on the original triangle's bisectors (proof is trivial for every vertex of the green triangle). The intersection point of triangle bisectors is the center of the inscribed circle. So, the homothety center Q is the center of the inscribed circle. The homothety coefficient k is the fraction of X with respect to inscribed circle radius R: k=R/(R-X). Thus, given the original triangle vertices A, B, C, find the inscribed circle Q, R, then find the scale k, then moveout the vertices: A'=A+(Q-A)*k - same for B, C - in vector form.
Use any convenient formula, for example, R=2*S/P, where S - area of the triangle, P - perimeter of the triangle. – mbaitoff Jan 15 '11 at 6:40