怎样用MATLAB在球内均匀的随即的取点??急!

谢谢大家了!
2025-04-08 08:49:32
推荐回答(1个)
回答1:

很简单啊,随机产生3个坐标,然后把球外的去掉就可以了。采用这个办法是因为在这个题目中,点的分布要求是均匀的,如果是其他类型的分布就可能不行了。
比如该球中心在(0.5, 0.5, 0.5),半径为0.5,要求随机取100个点。
xlist = []; % 存放结果的数组
ylist = [];
zlist = [];
cnt = 0;
while cnt < 100
x = rand();
y = rand();
z = rand();
if (x-0.5)^2 + (y-0.5)^2 + (z-0.5)^2 < 0.25 % 判断是否在球内部
cnt = cnt + 1;
xlist(cnt) = x;
ylist(cnt) = y;
zlist(cnt) = z;
end
end
plot3(xlist, ylist, zlist, 'or'); % 绘制点的分布的三维图