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选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
Python中的if、else、elif语句用法简明讲解
Mar 11 Python
Python实现简单字典树的方法
Apr 29 Python
python中redis的安装和使用
Dec 04 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
基于Python爬取素材网站音频文件
Oct 21 Python
如何用python爬取微博热搜数据并保存
Feb 20 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
奇妙的js
2007/09/24 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
详解vue 组件注册
2020/11/20 Vue.js
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
python发送邮件功能实现代码
2016/07/15 Python
python 数据的清理行为实例详解
2017/07/12 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
C语言基础笔试题
2013/04/27 面试题
联想C++笔试题
2012/06/13 面试题
先进个人事迹材料范文
2014/12/30 职场文书
教师考核评语大全
2014/12/31 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
react antd实现动态增减表单
2021/06/03 Javascript