Круги заданного радиуса через две точки
Учитывая две точки на плоскости и радиус, обычно через две точки могут быть проведены два круга заданного радиуса.
Исключения: радиус нуля должен рассматриваться как никогда не описывающий круги (за исключением случая, когда точки совпадают). Если точки совпадают, то может быть проведено бесконечное число кругов с точкой на их окружности, если радиус не равен нулю, а затем сворачивает круги в точку. Если точки образуют диаметр, верните один круг. Если точки слишком далеки друг от друга, круги не могут быть нарисованы. Задача: выполнить функцию, которая принимает две точки и радиус и возвращает два круга через эти точки. Для каждого результирующего круга укажите координаты для центра каждого круга, округленного до четырех десятичных цифр. Возвращает каждую координату в виде массива и координирует ее как массив массивов. Для краевых случаев возвращайте следующее: если точки находятся на диаметре, верните одну точку. Если радиус также равен нулю, верните "Radius Zero"
. Если точки совпадают, верните "Coincident point. Infinite solutions"
. Если точки находятся дальше друг от друга, чем диаметр, верните "No intersection. Points further apart than circle diameter"
. Примеры входов:
p1 p2 r 0,1234, 0,9876 0,8765, 0,2345 2,0 0,0000, 2,0000 0,0000, 0,0000 1,0 0,1234, 0,9876 0,1234, 0,9876 2,0 0,1234, 0,9876 0,8765, 0,2345 0,5 0,1234, 0,9876 0,1234, 0,9876 0,0Ref: Поиск центра круга из двух точек и радиуса из математического форума @ Drexel
Implement a function that takes two points and a radius and returns the two circles through those points. For each resulting circle, provide the coordinates for the center of each circle rounded to four decimal digits. Return each coordinate as an array, and coordinates as an array of arrays.
For edge cases, return the following:
- If points are on the diameter, return one point. If the radius is also zero however, return
"Radius Zero"
. - If points are coincident, return
"Coincident point. Infinite solutions"
. - If points are farther apart than the diameter, return
"No intersection. Points further apart than circle diameter"
.
Sample inputs:
p1 p2 r 0.1234, 0.9876 0.8765, 0.2345 2.0 0.0000, 2.0000 0.0000, 0.0000 1.0 0.1234, 0.9876 0.1234, 0.9876 2.0 0.1234, 0.9876 0.8765, 0.2345 0.5 0.1234, 0.9876 0.1234, 0.9876 0.0