生成圆周上的所有点
有人能帮我写一段代码吗?这段代码需要根据圆的半径和中心点,生成圆周上的所有点。我想要用Python来写这段代码。另外,能不能解释一下如果对两个点集(也就是圆周上的点)使用K-Means算法,假设这两个圆心相同但半径不同,会发生什么?聚类的结果会是怎样的?
3 个回答
1
我自己从来没有实现过这个,不过这篇维基百科的文章可能是个不错的起点。里面还有一个示例实现,你只需要把它翻译成Python就行了。:) 不过这对你问题中的k-means部分没有帮助。
3
下面是如何生成一个圆周上所有点的方法。
def all_floats():
for exp in xrange( -1024, 1024 ):
for man in xrange( -(2**52), 2**52 ):
yield (man/2**52)*2**exp
def all_circle( r=100, domain=all_floats ):
for x in domain():
for y in domain():
if x**2 + y**2 == r**2:
yield x, y
这可能不是你想要的结果。不过,写这个代码还是挺有意思的。
我觉得这个算法可以推广到不同的 all_floats
风格的函数,这些函数可以处理不同数字范围内的所有值。比如 all_ints
就很简单。而 all_decimal
可能也会很有趣。
22
下面的代码可以在一个以(0,0)为中心的圆的周长上生成你想要的点的数量,默认情况下会生成100个点。
import math
pi = math.pi
def PointsInCircum(r,n=100):
return [(math.cos(2*pi/n*x)*r,math.sin(2*pi/n*x)*r) for x in range(0,n+1)]