⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isosurface.cpp

📁 实现VC与MATLAB的无缝对接
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  #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 + -