TikZ: Obtener la coordenada del incentro de un triángulo

TikZ: Obtener la coordenada del incentro de un triángulo

quiero obtener la coordenada delincentro de un triangulo. quisiera tener una macro

\incenter{name}{a}{b}{c}

que establece una coordenada nameen el incentro del triángulo cuyos vértices tienen coordenadas a, b, c.

quería usareste cálculousando coordenadas cartesianas con el letcomando pero esto no funciona con coordenadas.

Respuesta1

Esto está tomado más o menos directamente de la tkz-euclidedocumentación ( texdoc -s euclide):

\documentclass[border=2mm]{standalone}

\usepackage{tkz-euclide}
\usetkzobj{all}

\newcommand{\incenter}[4]{%
    \begin{tikzpicture}
        \tkzInit[xmax=5,ymax=4]
        \tkzClip
        \tkzDefPoint(0,0){#2} %% Put the coordinates here
        \tkzDefPoint(5,1){#3} %% for the desired
        \tkzDefPoint(1,4){#4} %% triangle.
        \tkzDrawPolygon[color=red](#2,#3,#4)
        \tkzInCenter(#2,#3,#4)
        \tkzGetPoint{G}
        \tkzDrawPoint(G)
        \node[below] at (G) {#1};
    \end{tikzpicture}
}

\begin{document}

\incenter{name}{a}{b}{c}

\end{document}

ejemplo de incentro tkz-euclide

Una cosa más. Si desea especificar un triángulo arbitrario con \incenter, puede intentar esto:

\documentclass[border=2mm]{standalone}

\usepackage{tkz-euclide}
\usetkzobj{all}

\newcommand{\incenter}[2]{%
    \begin{tikzpicture}
        \foreach \x/\y [count=\i from 1] in {#2}{\tkzDefPoint(\x,\y){n-\i}}
        \tkzInit[xmax=5,ymax=4]
        \tkzClip
        \tkzDrawPolygon[color=red](n-1,n-2,n-3)
        \tkzInCenter(n-1,n-2,n-3)
        \tkzGetPoint{G}
        \tkzDrawPoint(G)
        \node[below] at (G) {#1};
    \end{tikzpicture}
}

\begin{document}

\incenter{Incenter!}{0/0.5,5/3,1/4}% {label}{x_1/y_1,x_2/y_2,x_3/y_3}

\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Si no te importa trabajar en puntos:

\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{math}
\begin{document}
\begin{tikzpicture}[x=1pt, y=1pt]
\draw [thick] (0, 0) coordinate (A) -- (20, 40) coordinate (B)
   -- (40, 10) coordinate (C) -- cycle;
\tikzmath{%
  coordinate \p, \I;
  \p1 = (A); \p2 = (B); \p3 = (C);
  \a = veclen(\px3-\px2, \py3-\py2);
  \b = veclen(\px1-\px3, \py1-\py3);
  \c = veclen(\px2-\px1, \py2-\py1);
  % Get the inradius
  \s = (\a + \b + \c) / 2;
  \K = sqrt(\s) * sqrt(\s - \a) * sqrt(\s - \b) * sqrt(\s - \c);
  \r = \K / \s;
  % Normalize the lengths a bit
  \m = max(\a, \b, \c);
  \a = \a / \m; \b = \b / \m; \c = \c / \m;
  % Get the incenter
  \ix = (\a*\px1 + \b*\px2 + \c*\px3) / (\a + \b + \c);
  \iy = (\a*\py1 + \b*\py2 + \c*\py3) / (\a + \b + \c);
  \I = (\ix, \iy);
}
\fill (\I) circle [radius=1];
\draw [red] (\I) circle [radius=\r];
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada