/ / OxyPlot desenha círculo incorretamente (com lacuna) - c #, matemática, oxyplot

OxyPlot desenha círculo incorretamente (com lacuna) - c #, matemática, oxyplot

Eu digitei isto:

myModel.Series.Add(new FunctionSeries((x) => Math.Sqrt(16 - Math.Pow(x, 2)), -4, 4, 0.1, "x^2 + y^2 = 16") { Color = OxyColors.Red });
myModel.Series.Add(new FunctionSeries((x) => - Math.Sqrt(16 - Math.Pow(x, 2)), -4, 4, 0.1) { Color = OxyColors.Red });

E OxyPlot desenhou:

insira a descrição da imagem aqui

Como corrigi-lo?

Respostas:

2 para resposta № 1

Isto é porque

Math.Sqrt(16 - Math.Pow(x, 2))

retorna NaN para x = 4 Porque 16 - Math.Pow(x, 2) é calculado com precisão dupla. Isso significa que o resultado é igual a 0 (-3,5527136788005E-14 nesse caso). Uma raiz quadrada negativa como Math.Sqrt(-3,5527136788005E-14) é indefinido como descrito em MSDN.

Você poderia consertá-lo, proibindo números negativos. Basta tirar o máximo do seu cálculo e 0 como

Math.Sqrt(Math.Max(16 - Math.Pow(x, 2), 0))