Учитывая две точки на плоскости и радиус, обычно через две точки могут быть проведены два круга заданного радиуса.
Исключения: радиус нуля должен рассматриваться как никогда не описывающий круги (за исключением случая, когда точки совпадают). Если точки совпадают, то может быть проведено бесконечное число кругов с точкой на их окружности, если радиус не равен нулю, а затем сворачивает круги в точку. Если точки образуют диаметр, верните один круг. Если точки слишком далеки друг от друга, круги не могут быть нарисованы. Задача: выполнить функцию, которая принимает две точки и радиус и возвращает два круга через эти точки. Для каждого результирующего круга укажите координаты для центра каждого круга, округленного до четырех десятичных цифр. Возвращает каждую координату в виде массива и координирует ее как массив массивов. Для краевых случаев возвращайте следующее: если точки находятся на диаметре, верните одну точку. Если радиус также равен нулю, верните"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
getCircles
- это функция.
testString: 'assert(typeof getCircles === "function", "getCircles
is a function.");'
- text: 'getCircles([0.1234, 0.9876], [0.8765, 0.2345], 2.0)
должны возвращать [[1.8631, 1.9742], [-0.8632, -0.7521]]
.'
testString: 'assert.deepEqual(getCircles(...testCases[0]), answers[0], "getCircles([0.1234, 0.9876], [0.8765, 0.2345], 2.0)
should return [[1.8631, 1.9742], [-0.8632, -0.7521]]
.");'
- text: 'getCircles([0.0000, 2.0000], [0.0000, 0.0000], 1.0)
должны возвращать [0, 1]
'
testString: 'assert.deepEqual(getCircles(...testCases[1]), answers[1], "getCircles([0.0000, 2.0000], [0.0000, 0.0000], 1.0)
should return [0, 1]
");'
- text: 'getCircles([0.1234, 0.9876], [0.1234, 0.9876], 2.0)
должны возвращать Coincident point. Infinite solutions
'
testString: 'assert.deepEqual(getCircles(...testCases[2]), answers[2], "getCircles([0.1234, 0.9876], [0.1234, 0.9876], 2.0)
should return Coincident point. Infinite solutions
");'
- text: 'getCircles([0.1234, 0.9876], [0.8765, 0.2345], 0.5)
должен возвращать No intersection. Points further apart than circle diameter
'
testString: 'assert.deepEqual(getCircles(...testCases[3]), answers[3], "getCircles([0.1234, 0.9876], [0.8765, 0.2345], 0.5)
should return No intersection. Points further apart than circle diameter
");'
- text: 'getCircles([0.1234, 0.9876], [0.1234, 0.9876], 0.0)
должны возвращать Radius Zero
'
testString: 'assert.deepEqual(getCircles(...testCases[4]), answers[4], "getCircles([0.1234, 0.9876], [0.1234, 0.9876], 0.0)
should return Radius Zero
");'
```