📄 isosurface.cpp
字号:
#include "matlib.h"
#pragma hdrstop
#include "isosurface.h"
#include "parseargs.h"
#include "xyzvcheck.h"
#include "isovalue.h"
#include "isosurf.h"
#include "isonormals.h"
Mm isosurface(Mm varargin, i_o_t, Mm& fout__o, Mm& vout__o) {
begin_scope
varargin.setname("varargin");
dMm(fout); dMm(vout); dMm(x); dMm(y); dMm(z); dMm(data); dMm(value); dMm(noshare); dMm(verbose); dMm(msg); dMm( \
v); dMm(f); dMm(sz); dMm(nv); dMm(p);
#line 1 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
call_stack_begin;
#line 1 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// nargin, nargout entry code
double old_nargin=nargin_val; if (!nargin_set) nargin_val=0+varargin.size();
nargin_set=0;
double old_nargout=nargout_val; if (!nargout_set) nargout_val=2.0;
nargout_set=0;
// translated code
#line 2 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//ISOSURFACE Isosurface extractor.
#line 3 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// FV = ISOSURFACE(X,Y,Z,V,ISOVALUE) computes isosurface geometry for
#line 4 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// data V at isosurface value ISOVALUE. Arrays (X,Y,Z) specify the points
#line 5 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// at which the data V is given. The struct FV contains the faces and
#line 6 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// vertices of the isosurface and can be passed directly to the PATCH
#line 7 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// command.
#line 8 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//
#line 9 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// FV = ISOSURFACE(V,ISOVALUE) assumes [X Y Z] = meshgrid(1:N, 1:M, 1:P)
#line 10 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// where [M,N,P]=SIZE(V).
#line 11 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//
#line 12 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// FV = ISOSURFACE(X,Y,Z,V) or FV = ISOSURFACE(V) selects an isosurface
#line 13 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// value automatically using the histogram of the data.
#line 14 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//
#line 15 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// FV = ISOSURFACE(..., 'noshare') does not attempt to create shared
#line 16 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// vertices. This is faster, but produces a larger set of vertices.
#line 17 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//
#line 18 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// FV = ISOSURFACE(..., 'verbose') prints progress messages to the command
#line 19 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// window as the computation progresses.
#line 20 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//
#line 21 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// [F, V] = ISOSURFACE(...) returns the faces and vertices in two arrays
#line 22 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// instead of a struct.
#line 23 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//
#line 24 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// ISOSURFACE(...) With no output arguments, a patch is created with the
#line 25 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// computed faces and vertices.
#line 26 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//
#line 27 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//
#line 28 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// Example:
#line 29 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// [x y z v] = flow;
#line 30 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// p = patch(isosurface(x, y, z, v, -3));
#line 31 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// isonormals(x,y,z,v, p)
#line 32 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
#line 33 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// daspect([1 1 1])
#line 34 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// view(3)
#line 35 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// camlight
#line 36 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// lighting phong
#line 37 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//
#line 38 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// See also ISONORMALS, ISOCAPS, SMOOTH3, SUBVOLUME, REDUCEVOLUME,
#line 39 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// REDUCEPATCH, SHRINKFACES.
#line 41 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// Copyright (c) 1984-98 by The MathWorks, Inc.
#line 42 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// $Revision: 1.1 $ $Date: 1998/05/13 23:26:58 $
#line 44 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ /*[x,y,z,data,value,noshare,verbose] = */parseargs(nargin(),varargin,i_o,x,y,z,data,value,noshare,verbose);
#line 46 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ if (istrue(length(value)>1.0)) {
#line 47 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ error(TM("Isovalue must be a scalar."));
#line 48 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
}
#line 50 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
// Take this out when other data types are handled
#line 51 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ data = mdouble(data);
#line 53 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ /*[msg,x,y,z] = */xyzvcheck(x,y,z,data,i_o,msg,x,y,z);
#line 53 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ display( error(msg) );
#line 55 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ if (istrue(isempty(value))) {
#line 56 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ value = isovalue(data);
#line 57 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
}
#line 59 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ /*[v,f] = */isosurf(data,value,noshare,verbose,i_o,v,f);
#line 60 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ v = ctranspose(v);
#line 61 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ f = ctranspose(f);
#line 62 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ if (istrue(isempty(v))) {
#line 63 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ v = nop_M;
#line 64 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ f = nop_M;
#line 65 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
}
#line 67 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ if (istrue(!isempty(x))&&istrue(!isempty(v))) {
#line 68 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ sz = size(x);
#line 69 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ if (istrue(!(isequal(x,colon(1.0,1.0,sz(2.0)),Mc())&&isequal(y,colon(1.0,1.0,sz(1.0)),Mc())&&isequal(z,colon( \
1.0,1.0,sz(3.0)),Mc())))) {
#line 70 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ nv(c_p,1.0) = interp3(x,v(c_p,1.0),v(c_p,2.0),v(c_p,3.0));
#line 71 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ nv(c_p,2.0) = interp3(y,v(c_p,1.0),v(c_p,2.0),v(c_p,3.0));
#line 72 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ nv(c_p,3.0) = interp3(z,v(c_p,1.0),v(c_p,2.0),v(c_p,3.0));
#line 73 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ v = nv;
#line 74 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
}
#line 75 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
}
#line 77 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ if (istrue(nargout()==0.0)) {
#line 78 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ p = patch((CL(TM("faces")),f,TM("vertices"),v,TM("facevertexcdata"),value,TM("facecolor"),TM("flat"),TM("edgecolor") \
,TM("none"),TM("userdata"),value));
#line 80 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ if (istrue(!isempty(x))) {
#line 81 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ isonormals((CL(x),y,z,data,p));
#line 82 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
} else {
#line 83 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ isonormals((CL(data),p));
#line 84 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
}
#line 85 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
} else
#line 85 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
if (istrue(nargout()==1.0)) {
#line 86 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ fout.member("vertices") = v;
#line 87 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ fout.member("faces") = f;
#line 88 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
} else {
#line 89 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ fout = f;
#line 90 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
_ vout = v;
#line 91 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
}
#line 94 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#line 95 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#line 96 "g:/matlabr11/toolbox/matlab/specgraph/isosurface.m"
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
call_stack_end;
// nargin, nargout exit code
nargin_val=old_nargin; nargout_val=old_nargout;
// function exit code
varargin.setname(NULL);
fout__o=fout; vout__o=vout;
return x_M;
end_scope
}
Mm isosurface() {
begin_scope
double old_nargin=nargin_val; nargin_val=0.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(varargin); varargin=cell(0); dMm(fout__o); dMm(vout__o);
isosurface(varargin, i_o, fout__o, vout__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(fout__o);
end_scope
}
Mm isosurface(Mm varargin) {
begin_scope
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -