有一个与之完全匹配的“代码高尔夫”问题(除了要求圆形的方程式,而不是绘制圆形的方程式)-请参阅https://pregolf.stackexchange.com/questions/2289/circle-
through-three-
points。将第一个也是最短的(Python)解决方案分解为更具可读性,更不容易破解的形式,以符合您的确切规格-
但保留使用复数进行更简单计算的核心思想:
x, y, z = 0+1j, 1+0j, 0-1jw = z-xw /= y-xc = (x-y)*(w-abs(w)**2)/2j/w.imag-xprint '(x%+.3f)^2+(y%+.3f)^2 = %.3f^2' % (c.real, c.imag, abs(c+x))
好的,这仍然是“打印方程式”而不是“绘制圆”,但是,我们越来越接近:-)。要实际 绘制
圆
matplotlib,请参见例如,用pyplot绘制圆-在上面的解决方案中,
c是圆的(负)中心(作为复数,因此将.real和.imag用作x / y坐标)
,以及
abs(c+x)半径(使用实数表示
abs)。



