Python实现将n个点均匀地分布在球面上的方法

 更新时间:2015年03月12日 09:18:53   作者:redraiment  
这篇文章主要介绍了Python实现将n个点均匀地分布在球面上的方法,涉及Python绘图的技巧与相关数学函数的调用,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Python实现将n个点均匀地分布在球面上的方法。分享给大家供大家参考。具体分析如下:

最近工作上遇到一个需求,将10000左右个点均匀地分布在一个球面上。所谓的均匀,即相邻的两个点之间的距离尽量一致。
我的算法是用基于正多面体剖分球面,我选的是正八面体。

1. 效果图如下:

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爬虫爬取新浪微博内容示例【基于代理IP】

    Python爬虫爬取新浪微博内容示例【基于代理IP】

    这篇文章主要介绍了Python爬虫爬取新浪微博内容,结合实例形式分析了Python基于代理IP实现的微博爬取与抓包分析相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • python中pandas.read_csv()函数的深入讲解

    python中pandas.read_csv()函数的深入讲解

    这篇文章主要给大家介绍了关于python中pandas.read_csv()函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python实现查找系统盘中需要找的字符

    Python实现查找系统盘中需要找的字符

    这篇文章主要介绍了Python实现查找系统盘中需要找的字符,涉及Python字符查找的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python如何新建三维数组并赋值

    Python如何新建三维数组并赋值

    本文详细介绍了如何使用Python和numpy库建立三维数组并对其进行赋值。首先,通过numpy创建一个3x3x3的三维数组,其次,将自定义的二维数组赋值到三维数组中。本文还解释了相关参数的含义,使读者能够更好地理解和应用到其他多维矩阵的操作中
    2024-09-09
  • Python 执行字符串表达式函数(eval exec execfile)

    Python 执行字符串表达式函数(eval exec execfile)

    今天在网上搜寻一些应用的例子时,发现有人用TK仅仅几行代码就写了个简易的计算器,惊为天人。回忆起刚学软件技术基础时编写简易计算器的艰辛,顿时泪流满面
    2014-08-08
  • Pycharm如何导入python文件及解决报错问题

    Pycharm如何导入python文件及解决报错问题

    这篇文章主要介绍了Pycharm如何导入python文件及解决报错问题,本文通过示例截图相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Python Social Auth构建灵活而强大的社交登录系统实例探究

    Python Social Auth构建灵活而强大的社交登录系统实例探究

    这篇文章主要为大家介绍了Python Social Auth构建灵活而强大的社交登录系统实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 利用Python画ROC曲线和AUC值计算

    利用Python画ROC曲线和AUC值计算

    这篇文章给大家介绍了如何利用Python画ROC曲线,以及AUC值的计算,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-09-09
  • 一文搞懂​​​​​​​python可迭代对象,迭代器,生成器,协程

    一文搞懂​​​​​​​python可迭代对象,迭代器,生成器,协程

    这篇文章主要介绍了一文搞懂​​​​​​​python可迭代对象,迭代器,生成器,协程,微博吱嘎部分围绕主题展开详细介绍,需要的小伙伴可以参考一下
    2022-05-05
  • Python使用CMD模块更优雅的运行脚本

    Python使用CMD模块更优雅的运行脚本

    这篇文章主要介绍了Python使用CMD模块更优雅的运行脚本的方法,实例分析了Python中cmd模块的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05

最新评论