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抓取Discuz!用户名脚本代码
Dec 30 Python
使用Python的Bottle框架写一个简单的服务接口的示例
Aug 25 Python
Django自定义过滤器定义与用法示例
Mar 22 Python
Python 将pdf转成图片的方法
Apr 23 Python
解决Python下json.loads()中文字符出错的问题
Dec 19 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
python编写计算器功能
Oct 25 Python
Django实现网页分页功能
Oct 31 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
python如何使用代码运行助手
Jul 03 Python
Python descriptor(描述符)的实现
Nov 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测试程序运行时间的类
2012/02/05 PHP
PHP文件操作方法汇总
2015/07/01 PHP
php数组指针操作详解
2017/02/14 PHP
详解php协程知识点
2018/09/21 PHP
php实现微信企业转账功能
2018/10/02 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
Python常用的日期时间处理方法示例
2015/02/08 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
解决uWSGI的编码问题详解
2017/03/24 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
大学校运会广播稿
2014/02/03 职场文书
班委竞选演讲稿
2014/04/28 职场文书
销售助理岗位职责
2015/02/11 职场文书
本溪水洞导游词
2015/02/11 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书