在球面上随机均匀分布点的算法
创作时间:
作者:
@小白创作中心
在球面上随机均匀分布点的算法
引用
1
来源
1.
http://sobereva.com/311
本文讨论了在球面上随机均匀分布点的三种算法,并通过Fortran代码和图形展示了每种算法的效果。文章内容涉及数学和编程,具有一定的专业性和实用性。
在球面上随机均匀分布点的算法是一个有趣且实用的问题,尤其是在计算机图形学、物理学模拟等领域。本文将介绍三种不同的算法,并通过Fortran代码和图形展示每种算法的效果。
第一种算法:旋转法
第一种方法是选取一个起始点(1,0,0),然后依次绕着X、Y、Z轴随机旋转一定的角度。Fortran代码如下:
x=1
y=0
z=0
!Step 1: Rotate about Z axis
call RANDOM_NUMBER(rotval)
rotval=rotval*2*pi
xtmp=cos(rotval)*x-sin(rotval)*y
ytmp=sin(rotval)*x+cos(rotval)*y
x=xtmp
y=ytmp
!Step 2: Rotate about Y axis
call RANDOM_NUMBER(rotval)
rotval=rotval*2*pi
xtmp=cos(rotval)*x-sin(rotval)*z
ztmp=sin(rotval)*x+cos(rotval)*z
x=xtmp
z=ztmp
!Step 3: Rotate about X axis
call RANDOM_NUMBER(rotval)
rotval=rotval*2*pi
ytmp=cos(rotval)*y-sin(rotval)*z
ztmp=sin(rotval)*y+cos(rotval)*z
y=ytmp
z=ztmp
这种方法在点数较少时看起来还蛮均匀,但当点数增多时,就会发现点的分布并不均匀。例如,当有100000个点时,可以隐约看到有一个环状分布比较密集。
第二种算法:极坐标法
第二种方法是使用极坐标系来生成点。对应的Fortran代码如下:
call RANDOM_NUMBER(rotval)
theta = pi*rotval
call RANDOM_NUMBER(rotval)
phi = 2*pi*rotval
x=sin(theta)*cos(phi)
y=sin(theta)*sin(phi)
z=cos(theta)
这种方法虽然简单,但会导致点在两极严重聚集。例如,当有10000个点时,分布如下所示:
第三种算法:Marsaglia方法
第三种方法是Marsaglia方法,这是最简单实用的方法。过程是,在(-1,1)区间内随机取两个值x1和x2,若这两个值的平方和大于等于1则重新选取。然后球面上的点的x、y、z的坐标用x1和x2就可以很简单得到。Fortran代码如下:
do while(.true.)
call RANDOM_NUMBER(x1)
call RANDOM_NUMBER(x2)
x1=2*(x1-0.5D0)
x2=2*(x2-0.5D0)
if (x1**2+x2**2<1) exit
end do
x=2*x1*dsqrt(1-x1**2-x2**2)
y=2*x2*dsqrt(1-x1**2-x2**2)
z=1-2*(x1**2+x2**2)
这种方法生成的点分布非常均匀完美。例如,当有10000个点时,分布如下所示:
热门推荐
正月二十二是“吉日”,牢记年俗4大传统,人财两旺,万事顺遂
面试前要了解公司哪些信息
常州的美食有哪些?
德国森林康养模式研究(权威专著《森林康养理论与实践》节选)
一文读懂PCB电路板之间的连接方式
转让费一般怎么算,有哪几种计算方法可以计算转让费
BTTRZ电缆详解:特性、应用及与其他电缆的区别
永劫无间:哈迪“三巨头”?T225成梦华赛季第三个单排泰斗!
法院对伪造合同怎么判?三个法律问题深度解析
意外怀孕期间抽烟喝酒的危害及应对策略
心脏病的全面治疗指南:从药物到生活方式调整
配音入门攻略:从基础到实践的全方位指导
体内铜超标有什么症状
白茶是绿茶还是红茶?白茶是什么茶?茶树品种和制作工艺别搞混了
WTI原油技术面反弹信号初现:若收复76美元,或加速上行!
十大受欢迎的食用油排名 国人最喜欢的10种食用油盘点
旅行箱内部收纳技巧:高效利用空间
洗碗机到底值不值得买?看看这些使用体验就知道
哺乳期能吃茴香饺子吗?专家解读:注意这6个要点
你超了吗?体重标准来了→
小红书流量密码:优质内容的四大要素
浪潮信息技术面深度解析:多指标共振释放回调信号
马化腾:科技行业的领军人物
网传“退休金过万元人数超过月薪过万人数”?真相来了
“感冒”越治越重,元凶却是更高发的它!“二汤、三招”打破春季“魔咒”
《王朝的余晖》| 淮军的一生,大清的晚年
弹簧测力计的使用方法
租金逾期支付:合理理由下的协商与解决方案
虫草一天吃几根为合适
健身圈传来噩耗,35岁健身网红突然离世,原因还是它!