尝试在python中创建一个坐标圆

2024-09-30 00:30:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个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)

Tags: inimportnumpyforlenasnprange
2条回答

你所拥有的

xy在第一象限。你只需将x和y坐标乘以-1,就可以将这个四分之一圆反映到其他象限中,得到这些值。你知道吗

但最好的方法是使用极坐标

你能做什么

考虑一下这个(对不起,我没有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]

将生成分布在圆上的所需点数

这是简单的极坐标版本:

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位左右的小数位。你知道吗

相关问题 更多 >

    热门问题