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实现探测socket和web服务示例
Mar 28 Python
python实现从web抓取文档的方法
Sep 26 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
深入浅析python变量加逗号,的含义
Feb 22 Python
Python使用pdb调试代码的技巧
May 03 Python
降低python版本的操作方法
Sep 11 Python
一文搞懂python异常处理、模块与包
Jun 26 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
建立文件交换功能的脚本(二)
2006/10/09 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
判断脚本加载是否完成的方法
2009/05/26 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
分享一个asp.net pager分页控件
2012/01/04 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
Express的路由详解
2015/12/10 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
python中的字典详细介绍
2014/09/18 Python
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Python解惑之True和False详解
2017/04/24 Python
基于python实现名片管理系统
2018/11/30 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
python pytest进阶之fixture详解
2019/06/27 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Python通过len函数返回对象长度
2020/10/22 Python
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
制药工程专业应届生求职信
2013/09/24 职场文书
军训自我鉴定
2014/01/22 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android