Dados dois pontos em um plano e um raio, geralmente dois círculos de raio dado podem ser traçados através dos pontos.
Exceções: Um raio de zero deve ser tratado como nunca descrevendo círculos (exceto no caso em que os pontos são coincidentes). Se os pontos são coincidentes, então um número infinito de círculos com o ponto em sua circunferência pode ser desenhado, a menos que o raio seja igual a zero também, o que colapsa os círculos em um ponto. Se os pontos formarem um diâmetro, retorne um único círculo. Se os pontos estiverem muito distantes, nenhum círculo poderá ser desenhado. Tarefa: Implemente uma função que leve dois pontos e um raio e retorne os dois círculos através desses pontos. Para cada círculo resultante, forneça as coordenadas para o centro de cada círculo arredondado para quatro dígitos decimais. Retorne cada coordenada como uma matriz e coordene como uma matriz de matrizes. Para casos de borda, retorne o seguinte: Se os pontos estiverem no diâmetro, retorne um ponto. Se o raio também for zero, retorne"Radius Zero"
. Se os pontos forem coincidentes, devolva "Coincident point. Infinite solutions"
. Se os pontos estiverem mais afastados do que o diâmetro, retorne "No intersection. Points further apart than circle diameter"
. Entradas de amostra: 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: Encontrar o centro de um círculo de 2 pontos e raio do fórum de matemática @ Drexel
getCircles
é uma função.
testString: 'assert(typeof getCircles === "function", "getCircles
is a function.");'
- text: 'getCircles([0.1234, 0.9876], [0.8765, 0.2345], 2.0)
deve retornar [[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)
deve retornar [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)
deve retornar um 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)
deve retornar 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)
deve retornar o 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
");'
```