--- title: Circles of given radius through two points id: 5951815dd895584b06884620 challengeType: 5 videoUrl: '' localeTitle: Круги заданного радиуса через две точки --- ## Description

Учитывая две точки на плоскости и радиус, обычно через две точки могут быть проведены два круга заданного радиуса.

Исключения: радиус нуля должен рассматриваться как никогда не описывающий круги (за исключением случая, когда точки совпадают). Если точки совпадают, то может быть проведено бесконечное число кругов с точкой на их окружности, если радиус не равен нулю, а затем сворачивает круги в точку. Если точки образуют диаметр, верните один круг. Если точки слишком далеки друг от друга, круги не могут быть нарисованы. Задача: выполнить функцию, которая принимает две точки и радиус и возвращает два круга через эти точки. Для каждого результирующего круга укажите координаты для центра каждого круга, округленного до четырех десятичных цифр. Возвращает каждую координату в виде массива и координирует ее как массив массивов. Для краевых случаев возвращайте следующее: если точки находятся на диаметре, верните одну точку. Если радиус также равен нулю, верните "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,0
Ref: Поиск центра круга из двух точек и радиуса из математического форума @ Drexel
## Instructions
## Tests
```yml tests: - text: 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");' ```
## Challenge Seed
```js function getCircles (...args) { // Good luck! return true; } ```
### After Test
```js console.info('after the test'); ```
## Solution
```js // solution required ```