球体中的点

时间:2017-04-23 13:22:20

标签: perl

嘿所有,                我正在研究有关表面积的算法。我使用perl作为编码语言。

我在球体中添加随机点时遇到问题。给定点的x,y,z坐标。我想围绕给定半径r的那些点构造一个球体。我的动机是用oder中的随机点填充这些球体以占据3d中的那个空间。

请指导我完成这一个。我不知道如何去做这个。

1 个答案:

答案 0 :(得分:4)

我建议您使用蒙特卡罗方法

假设你的球体居中于( X 0 Y 0 Z < sub> 0 ),半径 R

要用随机点填充该球体,在立方体中生成一个精确包含球体的随机坐标流,并拒绝任何落在球体外的点

rand(v) 是一个函数,它返回0到 v 之间的适当随机浮点值


  • 生成一个点 - 一组相对于球体中心的坐标

    dx = rand(2 R ) - R
    dy = rand(2 R ) - R
    dz = rand(2 R ) - R


  • 检查它是否在球体内

    dx 2 + dy 2 + dz 2 < /强> ≤ R 2


  • 如果绝对坐标有效

    ,则将绝对坐标添加到列表中

    保存 [ X 0 + dx Y 0 + dy Z 0 + dz ]


  • 继续生成积分,直到您拥有所需数量


我希望这会有所帮助