Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MatLab中两曲面相交处切片数据的获取_Matlab_Slice_Matlab Figure - Fatal编程技术网

MatLab中两曲面相交处切片数据的获取

MatLab中两曲面相交处切片数据的获取,matlab,slice,matlab-figure,Matlab,Slice,Matlab Figure,我有NxMxP数组中的流数据,我想在两个曲面的交点处找到数据的值。现在,我正在处理一个平面和一个圆柱体,但在将来,如果可能的话,我希望使用其他形状并查找相交圆弧上的数据 下面是飞机和圆柱体的图片,以及我制作它们的代码。红线是我想要获取数据的交叉点 AR = 5; R = 2.5; Ny = 200; % generate plane [x, y] = meshgrid(-(AR+1):(AR+1)/Ny:0, ... -0.7344:(0.7031- -0.7344)/Ny

我有NxMxP数组中的流数据,我想在两个曲面的交点处找到数据的值。现在,我正在处理一个平面和一个圆柱体,但在将来,如果可能的话,我希望使用其他形状并查找相交圆弧上的数据

下面是飞机和圆柱体的图片,以及我制作它们的代码。红线是我想要获取数据的交叉点

AR = 5;    R = 2.5;
Ny = 200;
% generate plane
[x, y] = meshgrid(-(AR+1):(AR+1)/Ny:0, ...
        -0.7344:(0.7031- -0.7344)/Ny:0.7031); % Generate x and y data
z = zeros(size(x, 1)); % Generate z data
% I needed to rotate the plane by an angle about y-axis for my purposes
V1 = [reshape(x,1,(Ny+1)^2);
    reshape(y,1,(Ny+1)^2);
    reshape(z,1,(Ny+1)^2)];
dphi = 7.5;    % angle to rotate in degrees
MR = [cosd(dphi) 0 -sind(dphi);...
    0 1 0;...
    sind(dphi) 0 cosd(dphi)];
% slice going through the center of the wing
VR1 = MR*V1;
xP = reshape(VR1(1,:),Ny+1,Ny+1);
yP = reshape(VR1(2,:),Ny+1,Ny+1);
zP = reshape(VR1(3,:),Ny+1,Ny+1);

% generate cylinder
Nt = floor(2.1*Ny*R);   % specify the number of nodes along the tangential axis
[Xc,Zc,Yc] = cylinder(R*ones(1,Ny),Nt);
% matrix for correcting the height of cylindrical slice
ty = -0.7344;
sy = 0.7031 - -0.7344;
Mt = [1 0 0 0;
    0 1 0 ty;   % vertical translation
    0 0 1 0;
    0 0 0 1];
Ms = [1 0 0 0;
    0 sy 0 0;   % vertical stretching
    0 0 1 0;
    0 0 0 1];
H = Mt*Ms*[ones(1,Ny);Yc(:,1)';ones(1,Ny);ones(1,Ny)];
Yc = repmat(H(2,1:Ny)',1,Nt+1);

% draw figure
figure
hold on
h1 = slice(Xw,Yw,Zw,ur,xP,yP,zP,'linear');
plane_sli = h1.CData;
set(plane_sli,'edgecolor','none')
h2 = slice(Xw,Yw,Zw,ur,Xc,Yc,Zc,'linear');
cyl_sli = h2.CData;
set(cyl_sli,'edgecolor','none')
axis equal
其他工作:尝试 遵循MathWorks网站上inShape的说明,如下所示

shp = alphaShape(xP(:),yP(:),zP(:));
tf = inShape(shp,xC(:),yC(:),zC(:));
tf
变量只是一个空(
Nt
*
Ny
)x1数组。也许我做错了什么,但似乎不起作用


这里是一个开始:您可以在平面(Xa,Ya,Za)上迭代,并使用inShape查看它与圆柱体(Xb,Yb,Zb)相交的位置;看


将来,你可以将其推广到迭代平面的横截面(例如长方体),然后尝试使用二进制搜索,这样你就不必迭代所有横截面。有趣的问题

这里是一个开始:您可以在平面(Xa,Ya,Za)上迭代,并使用inShape查看它与圆柱体(Xb,Yb,Zb)相交的位置;看


将来,你可以将其推广到迭代平面的横截面(例如长方体),然后尝试使用二进制搜索,这样你就不必迭代所有横截面。有趣的问题

当我有机会尝试时,我会的。请耐心等待。我尝试了你的建议,但似乎不起作用,我将更新我的问题以显示我的工作。我尝试运行你的代码,但似乎没有定义以下变量:Xw、Yw、Zw、Urt这些都是我研究中的数据,我无法上传,因为它们太大。如果有机会尝试,我会上传。请耐心。我尝试了你的建议,但似乎不起作用,我将更新我的问题以显示我的工作。我尝试运行你的代码,但似乎没有定义以下变量:Xw、Yw、Zw、Urt这些都是我研究中的数据,我无法上传,因为它们太大了。