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实现带验证码网站的自动登陆实现代码
Jan 12 Python
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
python类的继承实例详解
Mar 30 Python
Python实现Linux中的du命令
Jun 12 Python
利用python爬取斗鱼app中照片方法实例
Dec 03 Python
如何通过python画loss曲线的方法
Jun 26 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
pandas DataFrame创建方法的方式
Aug 02 Python
python实现贪吃蛇游戏源码
Mar 21 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 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/09/29 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
js微信分享实现代码
2020/10/11 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
详解Python中for循环的使用
2015/04/14 Python
Python读写文件方法总结
2015/06/09 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
python 模块导入问题汇总
2021/02/01 Python
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
优秀的教师个人的中文求职信
2013/09/21 职场文书
学子宴答谢词
2014/01/25 职场文书
大课间体育活动方案
2014/03/12 职场文书
出生公证委托书
2014/04/03 职场文书
捐资助学感谢信
2015/01/21 职场文书
教师个人自我评价
2015/03/04 职场文书
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL