Круги и квадраты имеют единую, определенную центральную точку. Однако понятие центра треугольника уже давно обсуждается. Древним грекам были известны четыре разных центра:
- Incenter : пересечение угловых биссектрис треугольника
- Центроид : пересечение линий от каждой вершины треугольника до середины его противоположной стороны
- Круговой центр : пересечение перпендикулярных биссектрис сторон
- Ортоцентр : пересечение высот треугольника
Позже Эйлер доказал, что центроид, окружность и ортоцентр коллинеарны в любом треугольнике. Линия, на которой эти три точки находятся в треугольнике, называется линией Эйлера . Он определяется для каждого треугольника, кроме равностороннего треугольника, где все точки совпадают.
Ваша задача - создать самую короткую программу или функцию, которая при наличии двух входов выводит определенный центр или линию Эйлера треугольника. Первый указывает координаты каждой вершины треугольника. Второе - целое число от 1 до 5, определяющее, что выводить.
1 - Incenter
2 - Centroid
3 - Circumcenter
4 - Orthocenter
5 - Equation of Euler Line
(if the Euler Line is vertical, output the `x` value of the line
(e.g. output `5` if the equation of the line is `x = 5`))
Вы можете предположить, что данные вершины никогда не будут коллинеарными, и что они всегда будут целочисленными координатами (это также исключает возможность наличия равностороннего треугольника в качестве входных данных, согласно комментарию @ R.Kap ).
Массив ввода должен быть допустимым вложенным массивом на вашем языке, а ввод должен быть в любом приемлемом формате. Любые значения с плавающей запятой должны отображаться с точностью не менее 3 десятичных знаков, но не менее. Выводимая точка должна быть допустимым массивом на вашем языке, соответствующим формату ввода.
Тестовые случаи:
Input: [(-2, 0), (1, 0), (0, 1)] 1
Output: (-0.089, 0.451)
Input: [(-2, 0), (1, 0), (0, 1)] 2
Output: (-0.333, 0.333)
Input: [(-2, 0), (1, 0), (0, 1)] 3
Output: (-0.5, -0.5)
Input: [(-2, 0), (1, 0), (0, 1)] 4
Output: (0, 2)
Input: [(-2, 0), (1, 0), (0, 1)] 5
Output: 5x + 2
Пояснение: входные данные могут быть либо из stdin, либо через пробел, либо через новую строку, либо как аргументы функции. Вывод, однако, должен быть записан на стандартный вывод.
y=f(x)
.
(if the triangle is equilateral, output the point at which the centers meet)
как это не возможно создать равносторонний треугольник на координатной плоскости , используя только целое число координат.