【发布时间】:2014-08-25 20:59:19
【问题描述】:
我正在尝试使用 MATLAB 在立方体模型中生成随机球体。我已经发布了正在尝试开发的代码的一部分。一个约束是确保随机球体被限制在立方体内。半径介于 (0.15 mm - 0.55 mm) 之间。 变量(dims)是立方体的维度。暗淡 = [ 10 10 10 ] (立方体尺寸为10mm * 10mm * 10mm)
function [ c, r ] = randomSphere( dims )
r = 0.15 + ( 0.55 - 0.15) .* rand(1);
x = (10 - r) * rand(1) + r;
y = (10 - r) * rand(1) + r;
z = (10 - r) * rand(1) + r;
c = [ x y z];
关于改进代码的任何想法。生成的所有坐标都小于 1,即在 (0,1) 之间。我应该如何缩放坐标?说像 (3.5, 5.6, 6.7) 之类的东西也被限制在一个立方体内。
【问题讨论】:
-
只是根据你的需要相乘和相加,例如
0.4*rand(1)+0.15会生成一个0.15到0.55之间的随机#... -
@natan 是的!我已经为'r'做了这个,它是球体的半径。我在确定大小为 10mm*10mm*10mm 的立方体内的球体坐标或位置时遇到问题。
-
如果你知道如何生成一个区间内的随机数
[a b]为什么不能生成一个区间内的三个随机数[a b]? -
因此,还有一个额外的约束,即球体坐标必须位于立方体的维度内。
-
这只是 x 中的区间
[a b],y 中的区间[a b],以及 z 中的区间[a b]。您可以根据需要设置a,b。您也可以在球内或球外随机采样,然后检查是否在球内,您仍然会均匀采样...