我正在尝试创建布料模拟器,并且需要一种存储粒子位置的方法。我想将它们存储为[x,y,z]。我需要所有粒子位置的数组。这将意味着具有数组[[x1,y1,z1],[x2,y2,z2],... etc]。
我的宽度和高度均为3,因此网格中应该有9个[x,y,z]。但是我的输出显示100个位置。我真的不知道我在做什么错。很抱歉,这个问题的格式可以更好。
for i = 1:particleWidth
for j = 1:particleHeight
X = (width*(i/particleWidth));
Y = (height*(j/particleHeight));
xPos = [xPos,X];
yPos = [yPos,Y];
end
end
[T1,T2,T3] = ndgrid(xPos,yPos,Z);
grid = [T1(:),T2(:),T3(:)];
disp(grid);
答案 0 :(得分:1)
ndgrid
复制输入以创建网格。
[X,Y]=ndgrid(1:3,4:6)
X =
1 1 1
2 2 2
3 3 3
Y =
4 5 6
4 5 6
4 5 6
如果要使用该功能,则应将xPos
和yPos
初始化为向量:
xPos = (width/particleWidth).*(1:particleWidth);
yPos = (height/particleHeight).*(1:particleHeight);
[T1,T2] = ndgrid(xPos,yPos); %T1 and T2 will be width-by-height arrays
grid = [T1(:),T2(:),zeros(numel(T1),1)]; % Or whatever Z should be
基本上,您已经将xPos
和yPos
创建为具有 width x height 条目的数组,因此至少获得了ndgrid
中的那个数字。如果Z
也有9个元素,那将使9 ^ 3 = 729行。