Python实现将n个点均匀地分布在球面上的方法


Posted in Python onMarch 12, 2015

本文实例讲述了Python实现将n个点均匀地分布在球面上的方法。分享给大家供大家参考。具体分析如下:

最近工作上遇到一个需求,将10000左右个点均匀地分布在一个球面上。所谓的均匀,即相邻的两个点之间的距离尽量一致。
我的算法是用基于正多面体剖分球面,我选的是正八面体。

1. 效果图如下:

Python实现将n个点均匀地分布在球面上的方法

2.sphere.py代码如下

#!/usr/bin/python
# -*- coding: utf-8 -*-
import math
class Spherical(object):
  '''球坐标系'''
  def __init__(self, radial = 1.0, polar = 0.0, azimuthal = 0.0):
    self.radial = radial
    self.polar = polar
    self.azimuthal = azimuthal
  def toCartesian(self):
    '''转直角坐标系'''
    r = math.sin(self.azimuthal) * self.radial
    x = math.cos(self.polar) * r
    y = math.sin(self.polar) * r
    z = math.cos(self.azimuthal) * self.radial
    return x, y, z
def splot(limit):
  s = Spherical()
  n = int(math.ceil(math.sqrt((limit - 2) / 4)))
  azimuthal = 0.5 * math.pi / n
  for a in range(-n, n + 1):
    s.polar = 0
    size = (n - abs(a)) * 4 or 1
    polar = 2 * math.pi / size
    for i in range(size):
      yield s.toCartesian()
      s.polar += polar
    s.azimuthal += azimuthal
for point in splot(input('')):
  print("%f %f %f" % point)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python实现删除文件但保留指定文件
Jun 21 Python
Python查询IP地址归属完整代码
Jun 21 Python
python字典操作实例详解
Nov 16 Python
用pandas中的DataFrame时选取行或列的方法
Jul 11 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
python wxpython 实现界面跳转功能
Dec 17 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
pandas map(),apply(),applymap()区别解析
Feb 24 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 Python
Python求解平方根的方法
Mar 11 #Python
python自动格式化json文件的方法
Mar 11 #Python
python处理csv数据的方法
Mar 11 #Python
python模拟鼠标拖动操作的方法
Mar 11 #Python
Python创建系统目录的方法
Mar 11 #Python
Python实现从订阅源下载图片的方法
Mar 11 #Python
Python获取网页上图片下载地址的方法
Mar 11 #Python
You might like
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
PHP的自定义模板引擎
2017/03/24 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
推荐11个实用Python库
2015/01/23 Python
python实现统计代码行数的方法
2015/05/22 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
python实现的生成word文档功能示例
2019/08/23 Python
python程序文件扩展名知识点详解
2020/02/27 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
在python image 中实现安装中文字体
2020/05/16 Python
python 元组和列表的区别
2020/12/30 Python
Python截图并保存的具体实例
2021/01/14 Python
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
人民调解员先进事迹材料
2014/05/08 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
实习推荐信格式模板
2015/03/27 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
羊脂球读书笔记
2015/06/30 职场文书
中学生运动会广播稿
2015/08/19 职场文书
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python