Redian新闻
>
做题了:随机产生不相交的球
avatar
做题了:随机产生不相交的球# JobHunting - 待字闺中
b*v
1
有一个圆柱体,半径为R,高为H. 现在要在里面随机产生N个半径为r1,以及N个半
径为r2的小球。要求这些小球必须在圆柱体内,而且互不相交。一共需要M个sample。
请给出快速有效的算法。
avatar
c*8
2
can you show us an example?
avatar
y*n
3
does that mean M = 2*N?

【在 b******v 的大作中提到】
: 有一个圆柱体,半径为R,高为H. 现在要在里面随机产生N个半径为r1,以及N个半
: 径为r2的小球。要求这些小球必须在圆柱体内,而且互不相交。一共需要M个sample。
: 请给出快速有效的算法。

avatar
r*d
4
我写下我的思路, 看看行不行
题目就是要随机产生M个坐标为(x.y.z)的球
坐标原点为圆柱体下表面的圆心。
满足:
(1)球在圆柱里面:
高度方向约束:
0 0 半径方向约束是小球到圆柱轴线的距离比R-r小, 即:
sqrt(x*x+y*y) < R-r
(2)小球互相不相交,
对于任意两个小球, 两小球之间的距离大于(r1+r2):
sqrt( (x1-x2)^2+(y1-y2)^2 ) ) < r1-r2
那我能够想到的方法就是call c 的random(range) , 产生随即的数(x, y, z), 如果
不满足以上的条件, 就继续产生新的随机数。。。。
不过如果新产生的随机数总是不在满足的范围那个loop 就长了, 应该可以继续优化
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。