在球面上随机均匀分布点的算法
创作时间:
作者:
@小白创作中心
在球面上随机均匀分布点的算法
引用
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个点时,分布如下所示:
热门推荐
为什么我们会看到“鬼”?科学家通过实验,证明了“鬼”的真相
家装材料界的黑马网红——岩板到底有何过人之处?
青少年近视患者应该选择什么样的镜片
融资方向有什么?如何根据融资方向制定投资策略?
江西最“悲催”的大学,从211降为二本院校,录取分数暴跌
我军的815A电子侦察船,为什么美日韩军舰害怕它呢
长途运输的虾暂养方法
中高端医疗险方案对比分析
葡萄牙加时赛4-3险胜意大利,夺U19欧青赛冠军
休学再复学是就降了一届吗?
冰箱噪音大的原因及解决方法(为什么冰箱会产生噪音)
诺奖得主Parisi最新Nature速递:二维伊辛自旋玻璃的量子相变
陕中大突破性发现:五味子提取物可改善2型糖尿病!
情感懂得这3招处理矛盾的恋爱技巧,才能不容易分手
手麻警訊!一張表格,健康命脈自己掌握!
电诈案件警情通报及法律分析
劳动合同的章数及内容概述
Science最新研究:通过饮食干预影响胆汁酸代谢可调控抗肿瘤免疫反应
武则天与敦煌《金刚经》的故事
不同MBTI人格的项目管理指南:找准优势,突破瓶颈
如何在银行办理网上银行的转账限额调整?
老公公司财产和妻子相关吗?婚后公司财产分割指南
建言 | 广州2035核心线网改善计划:这5条地铁线,可以这样调整……
钱学森在美国留学的经历与启示
8大原因揭秘!掉头发的原因,掉头发日常护理全攻略
高温干旱下草莓育苗管理要点
商业房屋贷款的还款流程是什么?这种还款方式对个人现金流有何影响?
图解一致性哈希算法,一篇就吃透!
3月最适合中老年人的5种养生汤谱,赶紧试试
小米手机进入Recovery模式详解:操作指南与必要性介绍