Если нормальный вектор плоскости, на которой вы хотите срезать свою поверхность, всегда будет располагаться в плоскости xy, тогда вы можете интерполировать данные по вашей поверхности вдоль координат x, y, которые находятся в линии резки, например, пусть плоскость определяется как переход от точки (0,15) до точки (50,35)
% Create Data
z=peaks(50);
% Create x,y coordinates of the data
[x,y]=meshgrid(1:50);
% Plot Data and the slicing plane
surf(z);
hold on
patch([0,0,50,50],[15,15,35,35],[10,-10,-10,10],'w','FaceAlpha',0.7);
% Plot an arbitrary origin axis for the slicing plane, this will be relevant later
plot3([0,0],[15,15],[-10,10],'r','linewidth',3);
так как плоскость, относительно легко получить х, у координаты alogn плоскости среза с linspace
, я получу 100 баллов, а затем интерполировать эти 100 точек в исходные данные.
% Create x and y over the slicing plane
xq=linspace(0,50,100);
yq=linspace(15,35,100);
% Interpolate over the surface
zq=interp2(x,y,z,xq,yq);
Теперь, когда мы имеем значение г, нам нужно против того, чтобы построить их против, вот где вам нужно определить произвольную ось происхождения для сращивания плоскости, я определил мину при (0,15) для а затем вычислить расстояние каждой пары x, y до этой оси, а затем мы можем построить полученную z на этом расстоянии.
dq=sqrt((xq-0).^2 + (yq-15).^2);
plot(dq,zq)
axis([min(dq),max(dq),-10,10]) % to mantain a good perspective
Пара вопросов. Будет ли ваша определенная плоскость параллельна оси z или имеет ли она полные 3 степени свободы во вращении? И как бы вы определили ось x в вашем графике вывода? –
@NoelSegura Меня интересует плоскость резания, нормальный вектор которой всегда находится в плоскости ху. То есть плоскость, разрезающая в любом направлении x, y, но всегда вертикальная. – ConfusinglyCuriousTheThird