我正在尝试使用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 :(得分:1)
你几乎做对了,这是一种方法:
function [ c, r ] = randomSphereGen()
r = 0.15 + ( 0.55 - 0.15) .* rand(1);
c = bsxfun(@times,(10 - 2*r) , rand(1,3)) + r;