EduBrick

Замечательные точки треугольника

Биссектриса, вписанная и описанная окружности, центр масс. Четыре формулы, которые выводятся, а не запоминаются.

2 мин

Школьные построения циркулем в программе не нужны: у каждой замечательной точки есть формула в координатах.

Биссектриса угла

Биссектриса угла с вершиной XX и лучами на YY и ZZ идёт по направлению суммы единичных векторов:

d=XYXY+XZXZ.\vec{d} = \frac{\vec{XY}}{|\vec{XY}|} + \frac{\vec{XZ}}{|\vec{XZ}|}.

Почему так: сумма двух единичных векторов — диагональ ромба, а диагональ ромба делит его угол пополам.

Если сложить не единичные, а исходные векторы, длины перекосят направление. Насколько сильно — видно на примере X=(0,0)X = (0,0), Y=(10,0)Y = (10,0), Z=(0,1)Z = (0,1): сумма исходных векторов даёт направление (10,1)(10, 1), которое делит прямой угол на 5,71° и 84,29° вместо 45° и 45°.

Point d = normalized(Y - X) + normalized(Z - X);
Line bisector = lineThrough(X, X + d);

Вписанная окружность

Центр вписанной окружности (точка пересечения биссектрис) выражается через длины сторон как взвешенное среднее вершин:

I=aA+bB+cCa+b+c,I = \frac{a\,A + b\,B + c\,C}{a + b + c},

где a=BCa = |BC|, b=CAb = |CA|, c=ABc = |AB| — стороны, противолежащие вершинам. Радиус равен r=S/pr = S / p, где SS — площадь, а pp — полупериметр.

Это и есть ответ на задачу «привязать козла в треугольном огороде так, чтобы площадь выпаса была наибольшей»: наибольший круг, помещающийся в треугольник, — вписанный.

Описанная окружность

Центр описанной — точка пересечения серединных перпендикуляров. В координатах, если перенести начало в AA и обозначить b=BA\vec{b} = B - A, c=CA\vec{c} = C - A:

O=A+12[b,c](c2bb2c),O = A + \frac{1}{2\,[\vec{b}, \vec{c}]}\bigl(\,|\vec{c}|^2 \cdot \vec{b}^{\perp} - |\vec{b}|^2 \cdot \vec{c}^{\perp}\,\bigr),

где v=(vy,vx)\vec{v}^{\perp} = (-v_y, v_x), а [b,c][\vec{b}, \vec{c}] — векторное произведение. Знаменатель равен нулю ровно тогда, когда точки лежат на одной прямой и окружности не существует.

Центр масс

Самая простая из четырёх: M=(A+B+C)/3M = (A + B + C)/3. Для многоугольника формула другая — центр масс вершин и центр масс площади не совпадают.

Что проверять в решении

точка вырожденный случай признак
биссектриса YY или ZZ совпал с XX нулевая длина при нормировке
вписанная точки на одной прямой нулевая площадь
описанная точки на одной прямой нулевое векторное произведение
центр масс нет

Первые три требуют деления, и все три делят на величину, которая обращается в ноль на вырожденном входе. Проверяйте её до деления, а не после.

Смежное