如果圆柱体的半径r和高度h已给定,那么在圆柱体的体积内生成随机3d点[x,y,z]的最佳方法或算法是什么?在圆柱体中生成随机点
回答
在外接圆柱体的长方体内部生成一个随机点;如果它位于圆柱体内部(概率为π/ 4),则保留它,否则丢弃并重试。
这有**花费很长时间终止的可能性**。不值得让你失望,因为你没有错,但这是一个值得提及的警告。 – 2012-02-09 00:40:22
z轴很容易:-0.5 * H < = Z < = 0.5 * H
x和y等于圆将是: 的x^2 + Y^2 < = R^2
Buth数学是很久以前我:-)
特赦,但不应该是'0 <= z <= h'? – 2012-02-09 00:41:28
我认为这取决于你是否假设圆柱体在z方向居中,我的'圆柱体'中心位于(0,0,0)。 – 2012-02-09 01:03:44
啊。对。很公平。 – 2012-02-09 19:39:19
怎么样 - 在Python伪代码,让R上的半径和H是高度:
s = random.uniform(0, 1)
theta = random.uniform(0, 2*pi)
z = random.uniform(0, H)
r = sqrt(s)*R
x = r * cos(theta)
y = r * sin(theta)
z = z # .. for symmetry :-)
简单地取x = r * cos(angle)
和y = r * sin(angle)
的问题是,那么当r很小时,即在圆的中心,r的微小变化不会很大地改变x和y位置。 IOW,它导致笛卡尔坐标中的非均匀分布,并且这些点集中在圆的中心。以平方根来纠正这一点,至少如果我正确地完成了我的算术。
[AH,它看起来像SQRT was right。]
(请注意,我假定不考虑它,所述气缸与z轴对齐和气缸中心位于(0,0, H/2),在圆柱体中心设置(0,0,0)不那么随意,在这种情况下,z应选择在-H/2和H/2之间,而不是0,H。)
如果圆柱体沿着非标准轴,我喜欢有一个方法 – user1198477 2012-02-09 16:51:33
- 1. 在圆柱体内部生成随机点?
- 2. 生成圆柱坐标
- 3. 在n维圆环表面生成随机点
- 4. 在Python中上下生成随机点
- 5. 随机浮点生成器在matlab中?
- 6. Windows Phone 8 C#随机椭圆生成
- 7. ECC随机点生成FPGA
- 8. 沿着圆周上的一个点生成随机形状
- 9. openGL中的随机点生成
- 10. 在一个立方体的表面上生成3D随机点
- 11. 将图像排列成圆柱体?
- 12. 生成不重叠的随机物体
- 13. 随机生成点网核nuke app_offline
- 14. 如何生成随机斑点?
- 15. 使随机生成的ImageButtons可点击
- 16. 生成随机点构建程序线
- 17. Android:点击生成随机颜色?
- 18. 使用MATLAB生成空心球体内的随机点
- 19. 随机数生成在PySpark
- 20. 生成随机数
- 21. ArrayList随机生成
- 22. 随机数生成
- 23. Javascript随机生成
- 24. 生成随机ASCII
- 25. 生成随机数
- 26. 生成随机图
- 27. 创建透明圆柱体
- 28. X3dom:旋转圆柱体
- 29. 圆柱投影到球体
- 30. 查看圆柱体内部
这些答案一直假设圆柱体与z轴对齐。这些答案是否足够,或者您是否需要一种方法来计算类似的圆柱体,也就是说,沿非标准轴线? – 2012-02-09 00:42:46
下面的答案也假设您希望均匀分布在圆柱体积内的点。如果那不是你想要的,你应该清楚地指出。 – andand 2012-02-09 06:41:19
如果圆柱体沿着非标准轴线,我喜欢有一个方法 – user1198477 2012-02-09 16:50:56