【发布时间】:2013-03-27 17:42:09
【问题描述】:
我有一个稀疏的 3d 体积(立方体),在每个 x,y 位置我想创建一个半径为 r 的球体,中心位于 x,y,z。对于每个球体,我想计算质心。
我的问题:
每个球体内的点分布不均匀,所以我的质心不是质心,我如何计算质心?我发现了很多不同的方法...
-
我需要在每个
size(x)*size(y)次计算这个,这可能非常大, 我可以像这样创建一个 3d 球体:w = ceil(r)*2+1; [x,y,z] = meshgrid(1:w,1:w,1:w); xc = floor(w./2)+1; yc = floor(w./2)+1; zc = floor(w./2)+1; mask = (x-xc).^2 + (y-yc).^2 + (z-zc).^2 <= r.^2; mask = double(mask);
但这会让我对每个点都使用循环,并且会很耗时。 谢谢 MATLAB
【问题讨论】:
-
你事先有点坐标,还是随机确定?
-
我有,其实是1:size(x), 1:size(y),1:size(z)
-
那么质心将为 (1+size(x))/2, (1+size(y))/2, (1+size(z))/2
-
我无法完全理解你的问题,你想计算所有球体的质心,还是立方体?
-
@fatih_k,每个球体中的每个点都有不同的质量,所以质心不是质心,球体取自立方体的位置,这并不重要,我提到过因为我想强调的是应该很快,因为立方体很大,我需要执行 x*y 次。
标签: matlab geometry computer-vision physics