Python – 围绕中心(x,y)位置生成随机顶点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python – 围绕中心(x,y)位置生成随机顶点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2188字,纯文字阅读大概需要4分钟。
内容图文
![Python – 围绕中心(x,y)位置生成随机顶点](/upload/InfoBanner/zyjiaocheng/820/87b5d2b065e34b26997fb84742947a32.jpg)
在我需要的时候,我无法找到关于这个主题的文章或stackoverflow问题.
我正在制作2D游戏,我想生成一个随机形状的小行星.每个小行星都有一个中心,一个X,Y位置,我想生成让我们说它周围有8个顶点(顶点的数量是可变的)
如果我现在可以实现这个形状,我想添加一个随机元素,让我们说一个变量和距离中心的随机距离来创建一个随机的岩石形状.
我研究过一些叫做Polar to Cartisian Coordinates的三角概念,但是还没有弄清楚如何将它应用到这个目标.虽然在Javascript中有它的教程,但它使用了我必须从头开始在python中创建的库和函数.
编辑:
所以你的答案主要是解释公式以获得围绕中心的顶点,这些是我已经知道如何做的事情,
1)在我正在使用的图形库中绘制一个多边形
2)获取随机数
非常感谢你提前!
解决方法:
您可以使用随机库在极坐标中随机采样.采样方向,然后采样径向距离.在下面的例子中,我选择了方向将均匀分布在[0,2 * pi]中,并且半径将正常分布为用户输入均值和标准差.
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
作为如何调用它的一个例子
>>> 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]]
如果你想要以特定的顺序缠绕点,那么我会使用像numpy.linspace这样的东西顺时针或逆时针走动来采样theta.例如
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
如果你不想安装numpy,你可以编写自己类似的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
内容总结
以上是互联网集市为您收集整理的Python – 围绕中心(x,y)位置生成随机顶点全部内容,希望文章能够帮你解决Python – 围绕中心(x,y)位置生成随机顶点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。