Generator von gleichmäßig verteilten Punkten in einem Kreis in Python

Ich habe die Aufgabe, auf konzentrischen Ringen eines unsichtbaren Kreises gleichmäßig (mehr oder weniger) verteilte Punkte zu erzeugen. Die Funktion sollte eine Liste von Radien und die Anzahl der Punkte, die für einen bestimmten Radius gezeichnet werden sollen, als Argumente verwenden. Zum Beispiel sollte für einen Radius von 0 1 Punkt bei (0,0) eingezeichnet werden. Für einen Kreis mit einem Radius von 1 sollte er 10 Punkte entlang des Kreisumfangs zeichnen, die in einem Winkel von 2 pi / 10 voneinander entfernt sind. Für einen Kreis mit Radius 2 sind 20 Punkte entlang des Umfangs in einem Winkel von 2 pi / 20 angeordnet.

Der Generator sollte die folgenden Parameter annehmen:

n, r_max, m

und sollte Ringe von Koordinatenpaaren bei Radien erzeugen

r_i = i * r_max / n für i = 0,1, .., n.

Jeder Ring sollte n * i Punkte haben, die gleichmäßig in θ verteilt sind, wobei n_i = 1 für i = 0 ist; n_i = mi für i> 0

Wenn die Funktion wie folgt aufgerufen wird:

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

it sollte einen Plot zurückgeben, der so aussieht:

Hier ist, was ich bisher erfunden habe:

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()

aber ich bin mir ziemlich sicher, dass es eine effizientere Methode gibt, bei der zwei for-Schleifen verwendet werden.

Danke vielmal

Antworten auf die Frage(8)

Ihre Antwort auf die Frage