【发布时间】:2014-11-15 11:58:34
【问题描述】:
我有通过管道的流体速度的 3D 流量数据。我知道管子的直径并查看了速度场,并在管子的两端找到了 xy 平面的场中心。所以我基本上有一条穿过管子中心轴的线。我想 NaN 直径之外的所有数据点。为此,我使用了一个方程,它给出了从 3D 线到点的距离,我在这里找到了 mathworld.wolfram.com/Point-LineDistance3-Dimensional.html。然后我创建了一个 if 语句,其中指出小于直径的点将为 NaN。
我是 matlab 新手,所以我不知道现在该如何绘制。
%%
diff_axis = end_axis-start_axis;
diff_axis_mag = (diff_axis(1)^2 + diff_axis(2)^2 + diff_axis(3)^2)^0.5;
[rw col pl] = size(X);
for j = 1:col
for i = 1:rw
for k = 1:pl
x_curr = X(i,j,k);
y_curr = Y(i,j,k);
z_curr= Z(i,j,k);
x0 = [x_curr y_curr z_curr]
t = - dot((start_axis-x0),(diff_axis))./(diff_axis_mag)^2;
d = sqrt(((start_axis(1) - x0(1)) + (end_axis(1) - start_end(1))*t)^2 + ((start_axis(2)-x0(2))+(end_axis(2)-start_end(2))*t)^2+((start_axis(3)-x0(3))+(end_axis(3)-start_end(3))*t)^2);
if (d > D)
x_curr=NaN
y_curr=NaN
z_curr=NaN
end
end
end
end
【问题讨论】: