亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這個隨機生成的球形點云分布不均勻?

為什么這個隨機生成的球形點云分布不均勻?

九州編程 2022-12-27 10:03:00
我正在嘗試模擬從點源發出的輻射。為此,在給定光源坐標和所需的發射光線長度的情況下,我隨機生成球坐標中的方向向量,將其轉換為笛卡爾坐標,并返回正確的終點。但是,當我運行它并在 Blender 中可視化生成的點云(由所有隨機生成的端點組成)時,我發現它在球體的“極點”處的密度更高。我希望這些點沿球體均勻分布。我怎樣才能做到這一點?隨機生成函數:def getRadiationEmissionLineSeg(p, t):    if(p.size == 4):        #polar angle spans [0, pi] from +Z axis to -Z axis        #azimuthal angle spans [0, 2*pi] orthogonal to the zenith (in the XY plane)        theta = math.pi * random.random()        phi = 2 * math.pi * random.random()        #use r = 1 to get a unit direction vector        v = sphericalToCartesian(1, theta, phi)        #parametric vector form: vec = p + tv        #p = point that lies on vector (origin point in case of a ray)        #t = parameter (-inf, inf) for lines, [0, inf) for rays        #v = direction vector (must be normalized)        return p + t * v球面坐標->笛卡爾轉換函數:def sphericalToCartesian(r, theta, phi):    x = r * math.sin(theta) * math.cos(phi)    y = r * math.sin(theta) * math.sin(phi)    z = r * math.cos(theta)    return npy.array([x, y, z, 0])
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

當你通過球面坐標變換點并且角度 theta 接近 pi 時,作為 [0,2pi]x{theta} 圖像的圓變得越來越小。由于 theta 是均勻分布的,所以靠近極點的點會更多。它可以在網格圖像上看到。

http://img1.sycdn.imooc.com//63aa52810001ee3803390339.jpg

如果你想在球體上生成均勻分布的點,你可以利用這樣一個事實:如果你用兩個平行平面切割一個球體,平面之間的球面條帶的面積僅取決于平面之間的距離。因此,您可以使用兩個均勻分布的隨機變量在球體上獲得均勻分布:

  • -r 和 r 之間的 z 坐標,

  • 對應于經度的 [0, 2pi) 之間的角度 theta。

然后你可以很容易地計算出 x 和 y 坐標。

示例代碼:

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D


r = 1

n = 1000


z = np.random.random(n)*2*r - r

phi = np.random.random(n)*2*np.pi


x = np.sqrt(1 - z**2)*np.cos(phi)

y = np.sqrt(1 - z**2)*np.sin(phi)


fig = plt.figure(figsize=(8, 8))

ax = plt.axes(projection='3d')

ax.scatter(x, y, z)

plt.show()

結果n=100,250,1000:

http://img1.sycdn.imooc.com//63aa529300016f8406590231.jpg

查看完整回答
反對 回復 2022-12-27
  • 1 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號