gpt4 book ai didi

python - python中圆圈内均匀间隔点的生成器

转载 作者:太空狗 更新时间:2023-10-29 22:29:44 33 4
gpt4 key购买 nike

我的任务是在一个看不见的圆的同心环上生成均匀(或多或少)间隔的点。该函数应将半径列表和为给定半径绘制的点数作为参数。例如,对于 0 的半径,它应该在 (0,0) 处绘制 1 个点。对于半径为 1 的圆,它应该沿圆周绘制 10 个点,以 2pi/10 的角度间隔开。对于半径为 2 的圆,沿圆周有 20 个点,间隔角度为 2pi/20。

生成器应采用以下参数:

n, r_max, m

并且应该在半径处生成坐标对环

r_i = i*r_max/n 对于 i = 0,1,..,n。

每个环应该有 n*i 个点均匀分布在 θ 中,其中n_i=1 因为 i=0; n_i = mi 对于 i>0

当函数被这样调用时:

for r, t in genpolar.rtuniform(n=10, rmax=0.1, m=6):
plot(r * cos(t), r * sin(t), 'bo')

它应该返回如下图: Plot

这是我到目前为止的想法:

def rtpairs(R, N):
R=[0.0,0.1,0.2]
N=[1,10,20]
r=[]
t=[]
for i in N:
theta=2*np.pi/i
t.append(theta)

for j in R:
j=j
r.append(j)

plt.plot(r*np.cos(t),r*np.sin(t), 'bo')
plt.show()

但我很确定有一种使用两个 for 循环的更有效的方法。

非常感谢

最佳答案

我想通了。代码是这样的:

import numpy as np
import matplotlib.pyplot as plt

T = [1, 10, 20, 30, 40, 50, 60]
R = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]



def rtpairs(r, n):

for i in range(len(r)):
for j in range(n[i]):
yield r[i], j*(2 * np.pi / n[i])

for r, t in rtpairs(R, T):
plt.plot(r * np.cos(t), r * np.sin(t), 'bo')
plt.show()

关于python - python中圆圈内均匀间隔点的生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33510979/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com