生成圆周上的所有点

3 投票
3 回答
30977 浏览
提问于 2025-04-17 08:17

有人能帮我写一段代码吗?这段代码需要根据圆的半径和中心点,生成圆周上的所有点。我想要用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)]

撰写回答