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 文件与目录操作
Dec 24 Python
理解Python中的类与实例
Apr 27 Python
Python操作列表之List.insert()方法的使用
May 20 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
Python 通过URL打开图片实例详解
Jun 01 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 Python
python面试题之列表声明实例分析
Jul 08 Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
python新手学习使用库
Jun 11 Python
用python制作个视频下载器
Feb 01 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应用技巧
2008/03/27 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
初识Node.js
2015/03/20 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python实现把数字转换成中文
2015/06/29 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
python判断设备是否联网的方法
2018/06/29 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
python实现按关键字筛选日志文件
2019/12/24 Python
Python3实现飞机大战游戏
2020/04/24 Python
Python 必须了解的5种高级特征
2020/09/10 Python
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
四个太阳教学反思
2014/02/01 职场文书
大学毕业生求职自荐信
2014/02/20 职场文书
环保建议书
2014/03/12 职场文书
监察建议书格式
2014/05/19 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记