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多线程编程(四):使用Lock互斥锁
Apr 05 Python
Python实现豆瓣图片下载的方法
May 25 Python
Python实现对excel文件列表值进行统计的方法
Jul 25 Python
Python字符串处理实现单词反转
Jun 14 Python
python flask实现分页的示例代码
Aug 02 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
python动态进度条的实现代码
Jul 03 Python
如何更换python默认编辑器的背景色
Aug 10 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 Python
python如何将mat文件转为png
Jul 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
各种战术和打法的原创者
2020/03/04 星际争霸
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
纠风工作实施方案
2014/03/15 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
同意转租证明
2015/06/24 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
实用求职信模板范文
2019/05/13 职场文书
python神经网络 使用Keras构建RNN训练
2022/05/04 Python