Python實(shí)現(xiàn)將n個(gè)點(diǎn)均勻地分布在球面上的方法
本文實(shí)例講述了Python實(shí)現(xiàn)將n個(gè)點(diǎn)均勻地分布在球面上的方法。分享給大家供大家參考。具體分析如下:
最近工作上遇到一個(gè)需求,將10000左右個(gè)點(diǎn)均勻地分布在一個(gè)球面上。所謂的均勻,即相鄰的兩個(gè)點(diǎn)之間的距離盡量一致。
我的算法是用基于正多面體剖分球面,我選的是正八面體。
1. 效果圖如下:

2.sphere.py代碼如下
#!/usr/bin/python
# -*- coding: utf-8 -*-
import math
class Spherical(object):
'''球坐標(biāo)系'''
def __init__(self, radial = 1.0, polar = 0.0, azimuthal = 0.0):
self.radial = radial
self.polar = polar
self.azimuthal = azimuthal
def toCartesian(self):
'''轉(zhuǎn)直角坐標(biāo)系'''
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)
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
- Python數(shù)據(jù)可視化正態(tài)分布簡(jiǎn)單分析及實(shí)現(xiàn)代碼
- Python使用numpy產(chǎn)生正態(tài)分布隨機(jī)數(shù)的向量或矩陣操作示例
- Python實(shí)現(xiàn)的概率分布運(yùn)算操作示例
- python調(diào)用Matplotlib繪制分布點(diǎn)并且添加標(biāo)簽
- Python繪制的二項(xiàng)分布概率圖示例
- python k-近鄰算法實(shí)例分享
- 樸素貝葉斯算法的python實(shí)現(xiàn)方法
- 用Python實(shí)現(xiàn)通過哈希算法檢測(cè)圖片重復(fù)的教程
- python編寫的最短路徑算法
- kNN算法python實(shí)現(xiàn)和簡(jiǎn)單數(shù)字識(shí)別的方法
- Python實(shí)現(xiàn)的各種常見分布算法示例
相關(guān)文章
pytorch numpy list類型之間的相互轉(zhuǎn)換實(shí)例
今天小編就為大家分享一篇pytorch numpy list類型之間的相互轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
如何打包Python Web項(xiàng)目實(shí)現(xiàn)免安裝一鍵啟動(dòng)的方法
這篇文章主要介紹了如何打包Python Web項(xiàng)目,實(shí)現(xiàn)免安裝一鍵啟動(dòng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Flask實(shí)現(xiàn)跨域請(qǐng)求的處理方法
這篇文章主要介紹了Flask實(shí)現(xiàn)跨域請(qǐng)求的處理方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09
Python中的可視化設(shè)計(jì)與UI界面實(shí)現(xiàn)
本文介紹了如何使用Python創(chuàng)建用戶界面(UI),包括使用Tkinter、PyQt、Kivy等庫進(jìn)行基本窗口、動(dòng)態(tài)圖表和動(dòng)畫效果的實(shí)現(xiàn),通過示例代碼,展示了如何利用這些庫來構(gòu)建功能強(qiáng)大且美觀的界面2025-01-01
python實(shí)現(xiàn)靜態(tài)web服務(wù)器
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)靜態(tài)web服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Python獲取時(shí)間范圍內(nèi)日期列表和周列表的函數(shù)
這篇文章主要介紹了Python獲取時(shí)間范圍內(nèi)日期列表和周列表的函數(shù),文中給大家提到了python獲取日期的周數(shù) ,需要的朋友可以參考下2019-08-08
Python實(shí)現(xiàn)讀取文件的方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了Python中實(shí)現(xiàn)讀取文件效果的幾種方法總結(jié),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-09-09

