我试图用x和y坐标创建点。我希望这些点形成一个圆圈。我的天才计划是设置圆的半径然后使用事实x ^ 2 + Y ^ 2 = R ^ 2我设置x的范围并将y设置为y = root(r ^ 2-x ^ 2 )
但我意识到这还没有成为一个圆圈。 z中的点占四分之一圆,因为一切都是正的。我不知道如何解决这个问题
我想我只需要这样做4次。但是我只想为我的整个圈子提供100个值
import random
import numpy as np
import math
import numpy as np
N=100
r=10 #radius
xcharge_corord = np.linspace(0,10,N) # a bunch of possible x's
for i in range(len(xcharge_corord)):
ycharge_corord = np.sqrt(r**2-xcharge_corord**2) #y=root(r-x)
print(ycharge_corord)
Z = [] #z=[(x,y)(x,y)(x,y)(x,y)]
for i in range(len(xcharge_corord)):
Z.append((xcharge_corord[i], ycharge_corord[i]))
print(Z)
答案 0 :(得分:1)
这是简单的极坐标版本:
import math
n = 10
i = 0
while i < 360:
x = n * math.cos(math.radians(i))
y = n * math.sin(math.radians(i))
print x, y
i += 10 #whatever step angle
注意:您必须观察浮点问题为零,因此可能会舍入到小数位数为4左右。
答案 1 :(得分:0)
你拥有什么
第一象限中的x 和 y 。你需要恰当地将x和y坐标乘以-1,以将这个四分之一圆圈反映到其他象限中以获得这些值。
但IMO最好的方法是使用极坐标
您可以做什么
考虑一下(对不起,我没有numpy)
import random
import math
r = 5
yc = []
xc = range(0,6)
for x in xc:
yc.append(int(math.sqrt(r**2 - x**2)))
print yc
def neg_one(a):
return -a
z1 = zip(xc,yc)
z2 = zip(xc, map(neg_one, yc))
z3 = zip(map(neg_one, xc), map(neg_one, yc))
z4 = zip(map(neg_one, xc), yc)
print z1
print z2
print z3
print z4
现在这可能是您想要的点数的4倍。所以要解决这个问题
z_f = z1 + z2 + z3 + z4
print z_f
desired_value_points = 10
chunk_size = len(z_f) / desired_value_points
print "Chunk size: " + str(chunk_size)
print z_f[::chunk_size]
将生成遍布圆圈的所需点数