Учитывая декартовы координаты трех точек на плоскости, найдите уравнение окружности через них всех. Три точки не будут на прямой.
Каждая строка ввода в вашу программу будет содержать x
и y
координаты трех точек, в порядке A(x),A(y),B(x),B(y),C(x),C(y)
. Эти координаты будут действительными числами менее 1 000 000, разделенными друг от друга пробелом.
Решение должно быть напечатано в виде уравнения вида (x-h)^2 + (y-k)^2 = r^2
. Значения h
, k
, r
должны быть напечатаны с тремя цифрами после десятичной точки. Знаки плюс и минус в уравнениях должны быть изменены по мере необходимости, чтобы избежать нескольких знаков перед числом.
Sample Inputs
7.0 -5.0 -1.0 1.0 0.0 -6.0
1.0 7.0 8.0 6.0 7.0 -2.0
Sample Outputs
(x - 3.000)^2 + (y + 2.000)^2 = 5.000^2
(x - 3.921)^2 + (y - 2.447)^2 = 5.409^2
Ответы:
Питон,
176189 символовДелает все свои работы в сложной плоскости. Я иду математику из нижней части этой страницы .
-c
это центр круга.источник
C # - 490
Это находит 2 линии между AB и BC. Затем он находит, где пересекаются две части этих двух линий. (Я только что заметил, что @PeterTaylor упомянул в своем комментарии к @PeterOfTheCorn.)
источник
Рубин, 192 персонажа
Примеры использования:
источник
x
, то должны помочь ссылки на назначенияy
иr
вызов%
.Вольфрам Альфа (27)
Я говорю, используйте подходящий инструмент для работы.
Пример тут .
источник
Javascript (299)
Единственный способ решить эту проблему - алгебраически решить три уравнения для трех неизвестных, чтобы найти h, k и r.
Пример ввода / вывода:
7.0 -5.0 -1.0 1.0 0.0 -6.0
->(x-3)²+(y--2)²=5²
1.0 7.0 8.0 6.0 7.0 -2.0
->(x-3.9210526315789473)²+(y-2.4473684210526314)² =5.409159155551175²
Единственная ошибка, которую я вижу, состоит в том, что, если h или k отрицателен, он выводит
--
вместо+
.источник