Трисурф не может нанести на указанную ось
Я хотел бы сделать треугольный участок поверхности через функцию trisurf
, ориентируясь на указанную ось. Однако в документации MATLAB не указан какой-либо синтаксис для этого. Когда я открываю функцию, я получаю следующие первые строки:
function hh = trisurf(tri,varargin)
%TRISURF Triangular surface plot
% TRISURF(TRI,X,Y,Z,C) displays the triangles defined in the M-by-3
% face matrix TRI as a surface. A row of TRI contains indexes into
% the X,Y, and Z vertex vectors to define a single triangular face.
% The color is defined by the vector C.
%
% TRISURF(TRI,X,Y,Z) uses C = Z, so color is proportional to surface
% height.
%
% TRISURF(TR) displays the triangles in the triangulation TR. It uses
% C = TR.X(:,3) to color the surface proportional to height.
%
% H = TRISURF(...) returns a patch handle.
%
% TRISURF(...,'param','value','param','value'...) allows additional
% patch param/value pairs to be used when creating the patch object.
%
% Example:
%
% [x,y] = meshgrid(1:15,1:15);
% tri = delaunay(x,y);
% z = peaks(15);
% trisurf(tri,x,y,z)
%
% % Alternatively
% tr = triangulation(tri, x(:), y(:), z(:));
% trisurf(tr)
%
% See also PATCH, TRIMESH, DELAUNAY, triangulation, delaunayTriangulation.
% Copyright 1984-2017 The MathWorks, Inc.
narginchk(1,inf);
ax = axescheck(varargin{:});
ax = newplot(ax);
start = 1;
Ввод функции не определяется так же, как varargin
как это сделано в функции surf
например, поэтому невозможно указать дескриптор оси в качестве первой входной переменной. Если дескриптор оси указан в качестве второй входной переменной, функция axescheck
распознаю дескриптор, но позже я получаю ошибку, потому что ожидаемой второй входной переменной является вектор. Если дескриптор оси указан в качестве третьей входной переменной, функция axescheck
не распознает ручку вообще.
Я знаю, что могу сначала активировать ось, а затем вызвать trisurf
, но у меня это внутри цикла, так что делать это не рекомендуется. Есть ли другое решение?
2 ответа
Если у вас есть дескриптор осей того, который вас интересует, то вы можете сделать текущую ось такой,axes(youraxeshandle)
и просто использовать trisurf
без какого-либо конкретного ввода. Он должен быть добавлен к текущей оси, которая является той, которую вы выбрали.
Поскольку это все еще без ответа:
trisurf
создаетPatch
объект, который, как и большинство графических объектов, имеетParent
свойство.
% ax1 is the handle of you first axis
trisurf(k, x, y, z, 'Parent', ax1)