Python(四)——python实现球体内均匀采样

python实现球体内均匀采样

1.参考资料

参考了这篇用matlab实现的博客:
https://blog.csdn.net/qq_39709535/article/details/88936451
使用了python的random库中random.uniform()随机正态浮点数

2.code

import random
from mpl_toolkits import mplot3d
import numpy as np
import math
import matplotlib.pyplot as plt
%matplotlib inline
ax=plt.axes(projection="3d")

N=501
z=[]
x=[] 
y=[]
r=[]
angle1=[]
angle2=[]

for i in range(1,N+1):
    if(True):
        r.append(math.pow(random.uniform(0,1),1/3))
rline=np.array(r)

for i in range(1,N+1):
    if(True):
        angle1.append(random.uniform(0,1)*2*math.pi)
angle_1=np.array(angle1)

for i in range(1,N+1):
    if(True):
        angle2.append(math.acos(random.uniform(0,1)*2-1))
angle_2=np.array(angle2)

for i in range(1,N+1):
    if(True):
        x.append(rline[i-1]*math.cos(angle_1[i-1])*math.sin(angle_2[i-1]))
xline=np.array(x)

for i in range(1,N+1):
    if(True):
        y.append(rline[i-1]*math.sin(angle_1[i-1])*math.sin(angle_2[i-1]))
yline=np.array(y)

for i in range(1,N+1):
    if(True):
        z.append(rline[i-1]*math.cos(angle_2[i-1]))
zline=np.array(z)

ax.scatter3D(xline,yline,zline,s=3)
plt.savefig("D:\\samples\\球内采样.png")

3.效果图

在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值