首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >算法:计算椭圆内的伪随机点

问算法:计算椭圆内的伪随机点
EN

Stack Overflow用户
提问于 2011-04-03 18:55:46
回答 2查看 10.7K关注 0票数 18

对于我正在制作的一个简单的粒子系统,我需要,给定一个有宽度和高度的椭圆,计算位于该椭圆上的一个随机点X,Y。

现在我的数学不是最好的,所以我想问一下,有没有人能给我指个方向。

也许正确的方法是在宽度范围内选择一个随机浮点数,取它作为X,并由此计算出Y值?

EN

回答 2

Stack Overflow用户

发布于 2011-04-03 19:04:18

  1. 在半径为1的圆内生成一个随机点。这可以通过在区间[0, 2*pi)中取一个随机角度phi和在区间[0, 1)中取一个随机值rho来完成,然后计算

X= sqrt(rho) * cos(phi) y= sqrt(rho) * sin(phi)

公式中的平方根确保了圆内的均匀分布。

  • 缩放x和y到椭圆的尺寸

X=x*宽度/2.0 y=y*高度/2.0

票数 27
EN

Stack Overflow用户

发布于 2011-04-03 19:17:11

使用rejection sampling:在椭圆周围的矩形中选择一个随机点。通过检查(x-x0)^2/a^2+(y-y0)^2/b^2-1的符号来测试点是否在椭圆内。如果该点不在内部,请重复此步骤。(假设椭圆与坐标轴对齐。(类似的解决方案适用于一般情况,但当然更复杂。)

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5529148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档