欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)將n個點均勻地分布在球面上的方法

 更新時間:2015年03月12日 09:18:53   作者:redraiment  
這篇文章主要介紹了Python實現(xiàn)將n個點均勻地分布在球面上的方法,涉及Python繪圖的技巧與相關數(shù)學函數(shù)的調用,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Python實現(xiàn)將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程序設計有所幫助。

相關文章

最新評論