random
ライブラリを使用すると、無作為に極座標でサンプリングすることができます。方向をサンプリングし、半径方向の距離をサンプリングします。次の例では、オリエンテーションが[0, 2*pi]
に均一に分散され、半径が通常、ユーザー入力の平均と標準偏差で分布することを選択しました。あなたはポイントが特定の順序で巻くことにしたい場合は、私がサンプリングする時計回りまたは反時計回りを歩いてnumpy.linspace
のようなものを使用することになり
>>> generate_points(5.0, 7.0, 1.0, 0.1, 8)
[[4.4478263120757875, 6.018608023032151],
[4.407825651072504, 6.294849028359581],
[5.0570272843718085, 6.17834681191539],
[5.307793789416231, 6.156715230672773],
[4.368508167422119, 7.712616387293795],
[5.327972045495855, 5.917733119760926],
[5.748935178651789, 6.437863588580371],
[3.9312163910881033, 6.388093041756519]]
それをコールする方法の一例として、
import random
import math
def generate_points(center_x, center_y, mean_radius, sigma_radius, num_points):
points = []
for i in range(num_points):
theta = random.uniform(0, 2*math.pi)
radius = random.gauss(mean_radius, sigma_radius)
x = center_x + radius * math.cos(theta)
y = center_y + radius * math.sin(theta)
points.append([x,y])
return points
シータ。あなたがnumpy
をインストールしたくない場合の例
import random
import math
import numpy as np
def generate_points(center_x, center_y, mean_radius, sigma_radius, num_points):
points = []
for theta in np.linspace(0, 2*math.pi - (2*math.pi/num_points), num_points):
radius = random.gauss(mean_radius, sigma_radius)
x = center_x + radius * math.cos(theta)
y = center_y + radius * math.sin(theta)
points.append([x,y])
return points
のためにあなたがここに正確に何を求めているlinspace
def linspace(start, stop, num_steps):
values = []
delta = (stop - start)/num_steps
for i in range(num_steps):
values.append(start + i * delta)
return values
の独自の同様のバージョンを書き込むことができますか? –
私は正確に何を必要としているか説明しようとしました。それでは、あなたが何を理解していないのか教えてください。ありがとう –
"私はPolar to Cartisian Coordinatesという三角法の概念を研究しましたが、この目標にどのように適用するかを理解できませんでした"というのは不明な部分です。私は極座標が何であるかを知っていますが、私はあなたがそれらで何をしたいか分かりません。 –