Python实现将n个点均匀地分布在球面上的方法
作者:redraiment 发布时间:2021-02-21 20:56:33
标签: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程序设计有所帮助。


猜你喜欢
- 本文实例为大家分享了js贪吃蛇游戏的相关代码,供大家参考,具体内容如下<!DOCTYPE html><html lang=
- 本文我们来看一下如何使用 Python 将 QQ 好友头像拼成“五一快乐”四个字。我们可以将整个实现过程分为两步:爬取 QQ 好友头像、利用
- 1. 针对问题在编程开发的过程中,我们经常会有创建同类对象的场景,这样的操作可能会对性能产生影响,一个比较常见的做法是使用对象池,需要创建对
- python简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 为了让某个数据结构能够在网络上传输或能够保存至文件,它必须被编码然后再解码。当然已经有许多可用的编码方式了,比如 JSON、XML、Goog
- 一、享元模式享元,可理解为 Python 中的元类、最小粒度的类,系统中存在大量的相似对象时,可以选择享元模式提高资源利用率。享元具有两种状
- 索引 经常要查询的语句,则给它建一个索引 表连接 select T_Oders as o join T_Customers as C on
- 我就废话不多说了,大家还是直接看代码吧~#!/usr/bin/env python# encoding: utf-8''
- 前记Python新的版本中支持了async/await语法, 很多文章都在说这种语法的实现代码会变得很快, 但是这种快是有场景限制的。这篇文
- 写在前面很长一段时间内,我都在研究在线地图的开发者文档,百度地图和高德地图的开发者中心提供了丰富的在线地图服务,虽然有一定的权限限制,但不得
- Go语言中 sync 包里提供了互斥锁 Mutex 和读写锁 RWMutex 用于处理并发过程中可能出现同时两个或多个协程(或线程)读或写同
- Oracle数据库作为大型数据库管理系统,近年来一直占有世界上高端数据库的最大份额,其强大而完善的数据库管理功能,以及ORACLE公司推陈出
- 如果你经历过数据清洗的过程,你就会明白我的意思。而这正是撰写这篇文章的目的——让读者更轻松地进行数据
- 我看见朋友可以把数据库的记录输出到页面表格上去,觉得很有用。这是怎么做的啊?见下:dbtable.asp<html><he
- 概述在之前的风资源分析文章中,有提到过用widrose包来进行玫瑰图的绘制,目前的可视化绘图包有很多,但是最基础和底层的,本人认为还是mat
- 您可以将SQL Server 数据库引擎升级到 SQL Server 2008。SQL Server 安装程序只需最少的用户干预就可升级 S
- QSpinBox 是一个计数器控件,允许用户选择一个整数值,通过单击向上/向下按钮或按键盘上的上/下箭头来增加/减少当前显示的值,当然用户也
- golang作为一热门的兼顾性能 效率的热门语言,相信很多人都知道,在编程语言排行榜上一直都是很亮眼,作为一门强类型语言,二进制位的操作肯定
- 以前在windows下一直用的idel带的功能调试python程序,在linux下没调试过。(很多时候只是print)就从网上查找一下~方法