• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python实现将n个点均匀地分布在球面上的方法

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了点abcd均在同一球面上,在球面上有四个点pabc,球面上有四个点pabc,球面上有3个点,球面上有四个点等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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)
</div>

希望本文所述对大家的Python程序设计有所帮助。

</div>

您可能想查找下面的文章:

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

相关文章

  • Python 读写文件和file对象的方法(推荐)
  • django实现分页的方法
  • 在 Python 应用中使用 MongoDB的方法
  • python脚本爬取字体文件的实现方法
  • python list使用示例 list中找连续的数字
  • python里大整数相乘相关技巧指南
  • 简单讲解Python中的数字类型及基本的数学计算
  • Python中Collection的使用小技巧
  • 浅谈编码,解码,乱码的问题
  • python开发的小球完全弹性碰撞游戏代码

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python类继承与子类实例初始化用法分析
    • python实现FTP服务器服务的方法
    • 简介Python的collections模块中defaultdict类型的用法
    • python刷投票的脚本实现代码
    • python从入门到精通(DAY 3)
    • python socket网络编程步骤详解(socket套接字使用)
    • python随机生成指定长度密码的方法
    • Python中使用Inotify监控文件实例
    • Python编程中的文件操作攻略
    • 使用Python的Django框架实现事务交易管理的教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有