www.pudn.com > vcmatlab20060426WaterMark.zip > contours.cpp
//
// MATLAB Compiler: 2.2
// Date: Tue May 10 13:54:02 2005
// Arguments: "-B" "macro_default" "-O" "all" "-O" "fold_scalar_mxarrays:on" "-O" "fold_non_scalar_mxarrays:on" "-O" "optimize_integer_for_loops:on" "-O" "array_indexing:on" "-O" "optimize_conditionals:on" "-B" "sglcpp" "-p" "-W" "main" "-L" "Cpp" "-t" "-T" "link:exe" "-h" "libmmfile.mlib" "-W" "mainhg" "libmwsglm.mlib" "-A" "line:on" "-g" "-G" "-A" "debugline:on" "-O" "none" "-O" "fold_scalar_mxarrays:off" "-O" "fold_non_scalar_mxarrays:off" "-O" "optimize_integer_for_loops:off" "-O" "array_indexing:off" "-O" "optimize_conditionals:off" "libmmfile.mlib" "libmwsglm.mlib" "-v" "-h" "show"
//
#include "contours.hpp"
#include "libmatlbm.hpp"
#include "libmmfile.hpp"
void InitializeModule_contours() {
}
void TerminateModule_contours() {
}
static mwArray contours_veryclose(mwArray a = mwArray::DIN, mwArray b = mwArray::DIN);
#ifdef __cplusplus
extern "C"
#endif
void mlxContours_veryclose(int nlhs, mxArray * plhs[], int nrhs, mxArray * prhs[]);
static mwArray Mcontours(mwArray * msg, int nargout_, mwArray varargin);
static mwArray Mcontours_veryclose(int nargout_, mwArray a, mwArray b);
static mexFunctionTableEntry local_function_table_[1] = { { "veryclose", mlxContours_veryclose, 2, 1, NULL } };
_mexLocalFunctionTable _local_function_table_contours = { 1, local_function_table_ };
//
// The function "contours" contains the normal interface for the "contours" M-function from file "D:\matlab\matlab\toolbox\matlab\specgraph\contours.m" (lines 1-176). This function processes any input arguments and passes them to the implementation version of the function, appearing above.
//
mwArray contours(mwArray * msg, mwVarargin varargin) {
int nargout(1);
mwArray CS(mclGetUninitializedArray());
mwArray msg__(mclGetUninitializedArray());
if (msg != NULL) {
++nargout;
}
CS = Mcontours(&msg__, nargout, varargin.ToArray());
if (msg != NULL) {
*msg = msg__;
}
return CS;
}
//
// The function "mlxContours" contains the feval interface for the "contours" M-function from file "D:\matlab\matlab\toolbox\matlab\specgraph\contours.m" (lines 1-176). The feval function calls the implementation version of contours through this function. This function processes any input arguments and passes them to the implementation version of the function, appearing above.
//
void mlxContours(int nlhs, mxArray * plhs[], int nrhs, mxArray * prhs[]) {
MW_BEGIN_MLX();
{
mwArray mprhs[1];
mwArray mplhs[2];
int i;
mclCppUninitializeArrays(2, mplhs);
if (nlhs > 2) {
error(mwArray("Run-time Error: File: contours Line: 1 Column: 1 The function \"contours\" was called with more than the declared number of outputs (2)."));
}
mprhs[0] = mclCreateVararginCell(nrhs, prhs);
mplhs[0] = Mcontours(&mplhs[1], nlhs, mprhs[0]);
plhs[0] = mplhs[0].FreezeData();
for (i = 1; i < 2 && i < nlhs; ++i) {
plhs[i] = mplhs[i].FreezeData();
}
}
MW_END_MLX();
}
//
// The function "contours_veryclose" contains the normal interface for the "contours/veryclose" M-function from file "D:\matlab\matlab\toolbox\matlab\specgraph\contours.m" (lines 176-180). This function processes any input arguments and passes them to the implementation version of the function, appearing above.
//
static mwArray contours_veryclose(mwArray a, mwArray b) {
int nargout(1);
mwArray tf(mclGetUninitializedArray());
tf = Mcontours_veryclose(nargout, a, b);
return tf;
}
//
// The function "mlxContours_veryclose" contains the feval interface for the "contours/veryclose" M-function from file "D:\matlab\matlab\toolbox\matlab\specgraph\contours.m" (lines 176-180). The feval function calls the implementation version of contours/veryclose through this function. This function processes any input arguments and passes them to the implementation version of the function, appearing above.
//
void mlxContours_veryclose(int nlhs, mxArray * plhs[], int nrhs, mxArray * prhs[]) {
MW_BEGIN_MLX();
{
mwArray mprhs[2];
mwArray mplhs[1];
int i;
mclCppUninitializeArrays(1, mplhs);
if (nlhs > 1) {
error(mwArray("Run-time Error: File: contours/veryclose Line: 176 Column: 1 The function \"contours/veryclose\" was called with more than the declared number of outputs (1)."));
}
if (nrhs > 2) {
error(mwArray("Run-time Error: File: contours/veryclose Line: 176 Column: 1 The function \"contours/veryclose\" was called with more than the declared number of inputs (2)."));
}
for (i = 0; i < 2 && i < nrhs; ++i) {
mprhs[i] = mwArray(prhs[i], 0);
}
for (; i < 2; ++i) {
mprhs[i].MakeDIN();
}
mplhs[0] = Mcontours_veryclose(nlhs, mprhs[0], mprhs[1]);
plhs[0] = mplhs[0].FreezeData();
}
MW_END_MLX();
}
//
// The function "Mcontours" is the implementation version of the "contours" M-function from file "D:\matlab\matlab\toolbox\matlab\specgraph\contours.m" (lines 1-176). It contains the actual compiled code for that M-function. It is a static function and must only be called from one of the interface functions, appearing below.
//
//
// function [CS,msg]=contours(varargin)
//
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
static mwArray Mcontours(mwArray * msg, int nargout_, mwArray varargin) {
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMlineEnterFunction("D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m", "contours")
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwLocalFunctionTable save_local_function_table_(&_local_function_table_contours);
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
int nargin_(nargin(-1, mwVarargin(varargin)));
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray CS(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray dx(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray dy(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray Ibr(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray Itr(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray Itl(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray Ibl(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray fY(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray cY(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray fX(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray cX(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray Y(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray X(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray y(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray x(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray vy2(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray vx2(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray cpy(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray cpx(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray vy1(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray vx1(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray y2(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray x2(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray y1(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray x1(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray t(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray md(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray skewd(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray lev(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray nl(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray k(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray ii(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray Nx(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray Ny(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray zz(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray numarg_for_call(mclGetUninitializedArray());
#line 1 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray ans(mclGetUninitializedArray());
//
// %CONTOURS Contouring over non-rectangular surface.
// % CONTOURS calculates the contour matrix C for use by CONTOUR,
// % CONTOUR3, or CONTOURF to draw the actual contour plot.
// % CONTOURS(...) is the same as CONTOURC except CONTOURS(X,Y,Z,...)
// % allows the specification of parametric surfaces (as for SURF).
// % C = CONTOURS(Z) computes the contour matrix for a contour plot
// % of matrix Z treating the values in Z as heights above a plane.
// % C = CONTOURS(X,Y,Z), where X and Y are vectors, specifies the X-
// % and Y-axes limits for Z. X and Y can also be matrices of the
// % same size as Z, in which case they specify a surface as for SURF.
// % CONTOURS(Z,N) and CONTOURS(X,Y,Z,N) compute N contour lines,
// % overriding the default automatic value.
// % CONTOURS(Z,V) and CONTOURS(X,Y,Z,V) compute LENGTH(V) contour
// % lines at the values specified in vector V.
// %
// % The contour matrix C is a two row matrix of contour lines. Each
// % contiguous drawing segment contains the value of the contour,
// % the number of (x,y) drawing pairs, and the pairs themselves.
// % The segments are appended end-to-end as
// %
// % C = [level1 x1 x2 x3 ... level2 x2 x2 x3 ...;
// % pairs1 y1 y2 y3 ... pairs2 y2 y2 y3 ...]
// %
// % See also CONTOUR, CONTOUR3 and CONTOURF.
//
// % Copyright 1984-2001 The MathWorks, Inc.
// % $Revision: 1.17 $ $Date: 2001/04/15 12:03:50 $
//
// % Author: R. Pawlowicz (IOS) rich@ios.bc.ca
// % 12/12/94
//
// error(nargchk(1,4,nargin));
//
#line 33 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(33);
#line 33 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
error(mwVe(nargchk(mwArray(1), mwArray(4), mwArray(nargin_))));
//
// msg = [];
//
#line 34 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(34);
#line 34 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
*msg = empty();
//
// if (nargin <=2),
//
#line 35 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(35);
#line 35 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(mwArray(nargin_) <= mwArray(2))) {
//
// numarg_for_call = 1:nargin;
//
#line 36 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(36);
#line 36 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
numarg_for_call = colon(mwArray(1), mwArray(nargin_));
//
// if ~isa(varargin{1}, 'double')
//
#line 37 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(37);
#line 37 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(~ mwVe(feval(mwValueVarargout(), mlxIsa, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(1)), "double"))))) {
//
// varargin{1} = double(varargin{1});
//
#line 38 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(38);
#line 38 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
varargin.cell(1) = feval(mwValueVarargout(), mlxDouble_func, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(1))));
//
// end
//
#line 39 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(39);
#line 39 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// zz=varargin{1};
//
#line 40 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(40);
#line 40 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
zz = mwVsa(varargin, "varargin").cell(1);
//
// else
//
#line 41 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(41);
#line 41 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
//
// numarg_for_call= 3:nargin;
//
#line 42 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(42);
#line 42 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
numarg_for_call = colon(mwArray(3), mwArray(nargin_));
//
// if ~isa(varargin{1}, 'double')
//
#line 43 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(43);
#line 43 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(~ mwVe(feval(mwValueVarargout(), mlxIsa, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(1)), "double"))))) {
//
// varargin{1} = double(varargin{1});
//
#line 44 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(44);
#line 44 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
varargin.cell(1) = feval(mwValueVarargout(), mlxDouble_func, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(1))));
//
// end
//
#line 45 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(45);
#line 45 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// if ~isa(varargin{2}, 'double')
//
#line 46 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(46);
#line 46 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(~ mwVe(feval(mwValueVarargout(), mlxIsa, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(2)), "double"))))) {
//
// varargin{2} = double(varargin{2});
//
#line 47 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(47);
#line 47 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
varargin.cell(2) = feval(mwValueVarargout(), mlxDouble_func, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(2))));
//
// end
//
#line 48 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(48);
#line 48 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// if ~isa(varargin{3}, 'double')
//
#line 49 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(49);
#line 49 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(~ mwVe(feval(mwValueVarargout(), mlxIsa, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(3)), "double"))))) {
//
// varargin{3} = double(varargin{3});
//
#line 50 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(50);
#line 50 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
varargin.cell(3) = feval(mwValueVarargout(), mlxDouble_func, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(3))));
//
// end
//
#line 51 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(51);
#line 51 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// zz=varargin{3};
//
#line 52 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(52);
#line 52 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
zz = mwVsa(varargin, "varargin").cell(3);
//
// msg = xyzchk(varargin{1:3});
//
#line 53 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(53);
#line 53 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
*msg = feval(mwValueVarargout(), mlxXyzchk, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(colon(1, 3)))));
//
// if ~isempty(msg), CS = []; return, end
//
#line 54 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(54);
#line 54 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(~ mwVe(isempty(mwVv(*msg, "msg"))))) {
#line 54 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
CS = empty();
#line 54 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
goto return_;
#line 54 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// end;
//
#line 55 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(55);
#line 55 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
//
// CS=contourc(varargin{numarg_for_call});
//
#line 57 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(57);
#line 57 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
CS = Ncontourc(1, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(mwVsv(numarg_for_call, "numarg_for_call")))));
//
// [Ny,Nx]=size(zz);
//
#line 58 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(58);
#line 58 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
size(mwVarargout(Ny, Nx), mwVv(zz, "zz"));
//
//
// % Find data values and check curve orientation.
//
// ii= ones(1,size(CS,2))~=0;
//
#line 62 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(62);
#line 62 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
ii = mwVe(ones(mwVarargin(1, mwVe(size(mwValueVarargout(), mwVv(CS, "CS"), 2))))) != 0;
//
// k=1;
//
#line 63 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(63);
#line 63 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
k = 1;
//
// while (k < size(CS,2)),
//
#line 64 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(64);
#line 64 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
while (tobool(mwVv(k, "k") < mwVe(size(mwValueVarargout(), mwVv(CS, "CS"), 2)))) {
//
// nl=CS(2,k);
//
#line 65 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(65);
#line 65 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
nl = mwVsv(CS, "CS")(2, mwVsv(k, "k"));
//
//
// % Now this is a little bit of magic needed to make the filled contours
// % work. Essentially I draw the *closed* contours so that the "high" side is
// % always on the right. To test this, I take the cross product of the
// % first vector with a vector to a corner point and test the sign
// % against the elevation change. There are several special cases:
// % (1) If the contour line goes through a point (which happen when -Infs
// % are around), and (2) when the contour level equals the level on the high
// % side (this always seems to happen in 'simple test' cases!). We take
// % care of (1) by choosing other points, and we take care of (2) by adding
// % eps to the data before comparing with the contour data.
//
// if ( CS(:,k+1)==CS(:,k+nl) & nl>1 ),
//
#line 78 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(78);
#line 78 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
{
#line 78 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray a_(mwVe(mwVsv(CS, "CS")(colon(), mwVv(k, "k") + 1)) == mwVe(mwVsv(CS, "CS")(colon(), mwVv(k, "k") + mwVv(nl, "nl"))));
#line 78 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(a_) && tobool(a_ & mwVv(nl, "nl") > 1)) {
//
// lev=CS(1,k);
//
#line 79 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(79);
#line 79 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
lev = mwVsv(CS, "CS")(1, mwVsv(k, "k"));
//
//
// % Use manhattan distance to find a line segment that is the
// % farthest away from being on the grid (skewd is an integer
// % when a line segment is aligned with the grid so we look
// % for the "least integer-like" distance).
// skewd=abs(diff(CS(1,k+1:k+nl)))+abs(diff(CS(2,k+1:k+nl)));
//
#line 85 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(85);
#line 85 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
skewd = mwVe(abs(mwVe(diff(mwVe(mwVsv(CS, "CS")(1, colon(mwVv(k, "k") + 1, mwVv(k, "k") + mwVv(nl, "nl")))))))) + mwVe(abs(mwVe(diff(mwVe(mwVsv(CS, "CS")(2, colon(mwVv(k, "k") + 1, mwVv(k, "k") + mwVv(nl, "nl"))))))));
//
// skewd=abs(skewd-round(skewd));
//
#line 86 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(86);
#line 86 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
skewd = abs(mwVv(skewd, "skewd") - mwVe(round(mwVv(skewd, "skewd"))));
//
// [md,t]=max(skewd);
//
#line 87 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(87);
#line 87 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
md = max(&t, mwVv(skewd, "skewd"));
//
// if isempty(t), t = 1; end
//
#line 88 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(88);
#line 88 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(mwVe(isempty(mwVv(t, "t"))))) {
#line 88 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
t = 1;
#line 88 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
//
// x1=CS(1,k+t); y1=CS(2,k+t);
//
#line 90 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(90);
#line 90 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
x1 = mwVsv(CS, "CS")(1, mwVv(k, "k") + mwVv(t, "t"));
#line 90 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
y1 = mwVsv(CS, "CS")(2, mwVv(k, "k") + mwVv(t, "t"));
//
// x2=CS(1,k+t+1); y2=CS(2,k+t+1);
//
#line 91 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(91);
#line 91 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
x2 = mwVsv(CS, "CS")(1, mwVv(k, "k") + mwVv(t, "t") + 1);
#line 91 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
y2 = mwVsv(CS, "CS")(2, mwVv(k, "k") + mwVv(t, "t") + 1);
//
// vx1=x2-x1; vy1=y2-y1;
//
#line 92 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(92);
#line 92 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
vx1 = mwVv(x2, "x2") - mwVv(x1, "x1");
#line 92 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
vy1 = mwVv(y2, "y2") - mwVv(y1, "y1");
//
// cpx=round(x1); cpy=round(y1);
//
#line 93 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(93);
#line 93 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cpx = round(mwVv(x1, "x1"));
#line 93 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cpy = round(mwVv(y1, "y1"));
//
// if veryclose([cpx cpy],[x1 y1])
//
#line 94 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(94);
#line 94 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(mwVe(contours_veryclose(horzcat(mwVarargin(mwVv(cpx, "cpx"), mwVv(cpy, "cpy"))), horzcat(mwVarargin(mwVv(x1, "x1"), mwVv(y1, "y1"))))))) {
//
// cpx=round(x2); cpy=round(y2);
//
#line 95 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(95);
#line 95 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cpx = round(mwVv(x2, "x2"));
#line 95 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cpy = round(mwVv(y2, "y2"));
//
// if veryclose([cpx cpy],[x2 y2]),
//
#line 96 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(96);
#line 96 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(mwVe(contours_veryclose(horzcat(mwVarargin(mwVv(cpx, "cpx"), mwVv(cpy, "cpy"))), horzcat(mwVarargin(mwVv(x2, "x2"), mwVv(y2, "y2"))))))) {
//
// % If we've made it to here, the contour line is along a
// % grid line. It is also possible we're on a ridge or valley.
// % If so, filled ridge or valley contours will be drawn
// % with the same color on both sides.
// if [cpx cpy]~=round([x1 y1]), % Diagonal contour
//
#line 101 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(101);
#line 101 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(horzcat(mwVarargin(mwVv(cpx, "cpx"), mwVv(cpy, "cpy"))) != mwVe(round(horzcat(mwVarargin(mwVv(x1, "x1"), mwVv(y1, "y1"))))))) {
//
// cpx=round(x1);
//
#line 102 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(102);
#line 102 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cpx = round(mwVv(x1, "x1"));
//
// else % edge contour
//
#line 103 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(103);
#line 103 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
//
// cpx=round(x1)+round(y2-y1);
//
#line 104 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(104);
#line 104 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cpx = mwVe(round(mwVv(x1, "x1"))) + mwVe(round(mwVv(y2, "y2") - mwVv(y1, "y1")));
//
// cpy=round(y1)-round(x2-x1);
//
#line 105 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(105);
#line 105 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cpy = mwVe(round(mwVv(y1, "y1"))) - mwVe(round(mwVv(x2, "x2") - mwVv(x1, "x1")));
//
// % Make sure the values stay in bounds (stay at least one pixel
// % away from the edge since filled contours put NaNs there).
// if (cpx < 2) | (cpx > size(zz,2)-1)
//
#line 108 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(108);
#line 108 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
{
#line 108 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray a_0(mwVv(cpx, "cpx") < 2);
#line 108 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(a_0) || tobool(a_0 | mwVv(cpx, "cpx") > mwVe(size(mwValueVarargout(), mwVv(zz, "zz"), 2)) - 1)) {
//
// cpx=round(x1)-round(y2-y1);
//
#line 109 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(109);
#line 109 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cpx = mwVe(round(mwVv(x1, "x1"))) - mwVe(round(mwVv(y2, "y2") - mwVv(y1, "y1")));
#line 109 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
#line 109 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// end
//
#line 110 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(110);
#line 110 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// if (cpy < 2) | (cpy > size(zz,1)-1)
//
#line 111 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(111);
#line 111 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
{
#line 111 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray a_1(mwVv(cpy, "cpy") < 2);
#line 111 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(a_1) || tobool(a_1 | mwVv(cpy, "cpy") > mwVe(size(mwValueVarargout(), mwVv(zz, "zz"), 1)) - 1)) {
//
// cpy=round(y1)+round(x2-x1);
//
#line 112 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(112);
#line 112 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cpy = mwVe(round(mwVv(y1, "y1"))) + mwVe(round(mwVv(x2, "x2") - mwVv(x1, "x1")));
#line 112 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
#line 112 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// end
//
#line 113 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(113);
#line 113 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// end;
//
#line 114 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(114);
#line 114 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// end;
//
#line 115 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(115);
#line 115 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// end;
//
#line 116 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(116);
#line 116 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// vx2=cpx-x1; vy2=cpy-y1;
//
#line 117 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(117);
#line 117 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
vx2 = mwVv(cpx, "cpx") - mwVv(x1, "x1");
#line 117 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
vy2 = mwVv(cpy, "cpy") - mwVv(y1, "y1");
//
// if ( sign(zz(cpy,cpx)-lev+eps) == sign(vx1*vy2-vx2*vy1) ),
//
#line 118 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(118);
#line 118 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(mwVe(sign(mwVe(mwVsv(zz, "zz")(mwVsv(cpy, "cpy"), mwVsv(cpx, "cpx"))) - mwVv(lev, "lev") + 2.220446049250313e-16)) == mwVe(sign(mwVv(vx1, "vx1") * mwVv(vy2, "vy2") - mwVv(vx2, "vx2") * mwVv(vy1, "vy1"))))) {
//
// CS(:,k+(1:nl))=fliplr(CS(:,k+(1:nl)));
//
#line 119 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(119);
#line 119 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
CS(colon(), mwVv(k, "k") + colon(1, mwVv(nl, "nl"))) = fliplr(mwVe(mwVsv(CS, "CS")(colon(), mwVv(k, "k") + colon(1, mwVv(nl, "nl")))));
//
// end;
//
#line 120 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(120);
#line 120 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
#line 120 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
#line 120 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// end;
//
#line 121 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(121);
#line 121 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// ii(k)=0;
//
#line 122 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(122);
#line 122 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
ii(mwVsv(k, "k")) = 0;
//
// k=k+1+nl;
//
#line 123 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(123);
#line 123 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
k = mwVv(k, "k") + 1 + mwVv(nl, "nl");
//
// end;
//
#line 124 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(124);
#line 124 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
//
// % Data from integer coords to data coords. There are 3 cases
// % (1) Matrix X/Y
// % (2) Vector X/Y
// % (3) no X/Y. (do nothing);
//
// if nargin>2,
//
#line 131 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(131);
#line 131 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(mwArray(nargin_) > mwArray(2))) {
//
// x = varargin{1};
//
#line 132 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(132);
#line 132 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
x = mwVsa(varargin, "varargin").cell(1);
//
// y = varargin{2};
//
#line 133 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(133);
#line 133 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
y = mwVsa(varargin, "varargin").cell(2);
//
// end
//
#line 134 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(134);
#line 134 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
//
// if isempty(CS)
//
#line 136 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(136);
#line 136 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(mwVe(isempty(mwVv(CS, "CS"))))) {
//
// % Nothing to do
// elseif (nargin > 2) & (min(size(varargin{1})) > 1),
//
#line 138 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(138);
#line 138 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
#line 138 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray a_(mwArray(nargin_) > mwArray(2));
#line 138 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(a_) && tobool(a_ & mwVe(min(mwVe(feval(mwValueVarargout(), mlxSize, mwVarargin(mwVe(mwVsa(varargin, "varargin").cell(1))))))) > 1)) {
//
//
// X=CS(1,ii)'; Y=CS(2,ii)';
//
#line 140 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(140);
#line 140 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
X = ctranspose(mwVe(mwVsv(CS, "CS")(1, mwVsv(ii, "ii"))));
#line 140 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
Y = ctranspose(mwVe(mwVsv(CS, "CS")(2, mwVsv(ii, "ii"))));
//
// cX=ceil(X); fX=floor(X);
//
#line 141 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(141);
#line 141 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cX = ceil(mwVv(X, "X"));
#line 141 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
fX = floor(mwVv(X, "X"));
//
// cY=ceil(Y); fY=floor(Y);
//
#line 142 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(142);
#line 142 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cY = ceil(mwVv(Y, "Y"));
#line 142 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
fY = floor(mwVv(Y, "Y"));
//
//
//
// Ibl=cY+(fX-1)*Ny; Itl=fY+(fX-1)*Ny;
//
#line 145 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(145);
#line 145 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
Ibl = mwVv(cY, "cY") + (mwVv(fX, "fX") - 1) * mwVv(Ny, "Ny");
#line 145 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
Itl = mwVv(fY, "fY") + (mwVv(fX, "fX") - 1) * mwVv(Ny, "Ny");
//
// Itr=fY+(cX-1)*Ny; Ibr=cY+(cX-1)*Ny;
//
#line 146 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(146);
#line 146 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
Itr = mwVv(fY, "fY") + (mwVv(cX, "cX") - 1) * mwVv(Ny, "Ny");
#line 146 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
Ibr = mwVv(cY, "cY") + (mwVv(cX, "cX") - 1) * mwVv(Ny, "Ny");
//
//
// dy=cY-Y; dx=X-fX;
//
#line 148 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(148);
#line 148 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
dy = mwVv(cY, "cY") - mwVv(Y, "Y");
#line 148 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
dx = mwVv(X, "X") - mwVv(fX, "fX");
//
//
// CS(1,ii) = [ x(Ibl).*(1-dx).*(1-dy) + x(Itl).* (1-dx).*dy + ...
//
#line 150 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(150);
#line 150 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
CS(1, mwVsv(ii, "ii")) = ctranspose(times(times(mwVe(mwVsv(x, "x")(mwVsv(Ibl, "Ibl"))), 1 - mwVv(dx, "dx")), 1 - mwVv(dy, "dy")) + times(times(mwVe(mwVsv(x, "x")(mwVsv(Itl, "Itl"))), 1 - mwVv(dx, "dx")), mwVv(dy, "dy")) + times(times(mwVe(mwVsv(x, "x")(mwVsv(Itr, "Itr"))), mwVv(dx, "dx")), mwVv(dy, "dy")) + times(times(mwVe(mwVsv(x, "x")(mwVsv(Ibr, "Ibr"))), mwVv(dx, "dx")), 1 - mwVv(dy, "dy")));
//
// x(Itr).*dx.*dy + x(Ibr).*dx.*(1-dy) ]';
// CS(2,ii) = [ y(Ibl).*(1-dx).*(1-dy) + y(Itl).*(1-dx).*dy + ...
//
#line 152 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(152);
#line 152 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
CS(2, mwVsv(ii, "ii")) = ctranspose(times(times(mwVe(mwVsv(y, "y")(mwVsv(Ibl, "Ibl"))), 1 - mwVv(dx, "dx")), 1 - mwVv(dy, "dy")) + times(times(mwVe(mwVsv(y, "y")(mwVsv(Itl, "Itl"))), 1 - mwVv(dx, "dx")), mwVv(dy, "dy")) + times(times(mwVe(mwVsv(y, "y")(mwVsv(Itr, "Itr"))), mwVv(dx, "dx")), mwVv(dy, "dy")) + times(times(mwVe(mwVsv(y, "y")(mwVsv(Ibr, "Ibr"))), mwVv(dx, "dx")), 1 - mwVv(dy, "dy")));
//
// y(Itr).*dx.*dy + y(Ibr).*dx.*(1-dy) ]';
//
// elseif (nargin>2 & min(size(x))==1 ),
//
#line 155 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(155);
#line 155 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
#line 155 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray a_2(mwArray(nargin_) > mwArray(2));
#line 155 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(a_2) && tobool(a_2 & mwVe(min(mwVe(size(mwValueVarargout(), mwVv(x, "x"))))) == 1)) {
//
// X=CS(1,ii); Y=CS(2,ii);
//
#line 156 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(156);
#line 156 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
X = mwVsv(CS, "CS")(1, mwVsv(ii, "ii"));
#line 156 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
Y = mwVsv(CS, "CS")(2, mwVsv(ii, "ii"));
//
// cX=ceil(X); fX=floor(X);
//
#line 157 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(157);
#line 157 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cX = ceil(mwVv(X, "X"));
#line 157 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
fX = floor(mwVv(X, "X"));
//
// cY=ceil(Y); fY=floor(Y);
//
#line 158 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(158);
#line 158 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
cY = ceil(mwVv(Y, "Y"));
#line 158 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
fY = floor(mwVv(Y, "Y"));
//
//
// dy=cY-Y; dx=X-fX;
//
#line 160 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(160);
#line 160 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
dy = mwVv(cY, "cY") - mwVv(Y, "Y");
#line 160 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
dx = mwVv(X, "X") - mwVv(fX, "fX");
//
//
// if (size(x,2)==1),
//
#line 162 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(162);
#line 162 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(mwVe(size(mwValueVarargout(), mwVv(x, "x"), 2)) == 1)) {
//
// CS(1,ii)=[x(fX)'.*(1-dx)+x(cX)'.*dx];
//
#line 163 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(163);
#line 163 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
CS(1, mwVsv(ii, "ii")) = times(ctranspose(mwVe(mwVsv(x, "x")(mwVsv(fX, "fX")))), 1 - mwVv(dx, "dx")) + times(ctranspose(mwVe(mwVsv(x, "x")(mwVsv(cX, "cX")))), mwVv(dx, "dx"));
//
// else
//
#line 164 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(164);
#line 164 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
//
// CS(1,ii)=[x(fX).*(1-dx)+x(cX).*dx];
//
#line 165 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(165);
#line 165 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
CS(1, mwVsv(ii, "ii")) = times(mwVe(mwVsv(x, "x")(mwVsv(fX, "fX"))), 1 - mwVv(dx, "dx")) + times(mwVe(mwVsv(x, "x")(mwVsv(cX, "cX"))), mwVv(dx, "dx"));
//
// end;
//
#line 166 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(166);
#line 166 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
//
// if (size(y,2)==1),
//
#line 168 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(168);
#line 168 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
if (tobool(mwVe(size(mwValueVarargout(), mwVv(y, "y"), 2)) == 1)) {
//
// CS(2,ii)=[y(fY)'.*dy+y(cY)'.*(1-dy)];
//
#line 169 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(169);
#line 169 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
CS(2, mwVsv(ii, "ii")) = times(ctranspose(mwVe(mwVsv(y, "y")(mwVsv(fY, "fY")))), mwVv(dy, "dy")) + times(ctranspose(mwVe(mwVsv(y, "y")(mwVsv(cY, "cY")))), 1 - mwVv(dy, "dy"));
//
// else
//
#line 170 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(170);
#line 170 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
//
// CS(2,ii)=[y(fY).*dy+y(cY).*(1-dy)];
//
#line 171 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(171);
#line 171 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
CS(2, mwVsv(ii, "ii")) = times(mwVe(mwVsv(y, "y")(mwVsv(fY, "fY"))), mwVv(dy, "dy")) + times(mwVe(mwVsv(y, "y")(mwVsv(cY, "cY"))), 1 - mwVv(dy, "dy"));
//
// end;
//
#line 172 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(172);
#line 172 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
#line 172 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
} else {
#line 172 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
#line 172 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
//
// end;
//
#line 174 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(174);
#line 174 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
//
//
#line 175 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(175);
#line 175 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
return_:
#line 175 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwValidateOutput(CS, 1, nargout_, "CS", "contours");
#line 175 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwValidateOutput(*msg, 2, nargout_, "msg", "contours");
#line 175 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMlineFunctionReturn()
#line 175 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
return CS;
#line 175 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMlineExitFunctionReturn();
#line 175 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}
//
// The function "Mcontours_veryclose" is the implementation version of the "contours/veryclose" M-function from file "D:\matlab\matlab\toolbox\matlab\specgraph\contours.m" (lines 176-180). It contains the actual compiled code for that M-function. It is a static function and must only be called from one of the interface functions, appearing below.
//
//
// function tf = veryclose(a,b)
//
#line 176 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
static mwArray Mcontours_veryclose(int nargout_, mwArray a, mwArray b) {
#line 176 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMlineEnterFunction("D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m", "contours/veryclose")
#line 176 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwLocalFunctionTable save_local_function_table_(&_local_function_table_contours);
#line 176 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwArray tf(mclGetUninitializedArray());
//
// % Return true if the two inputs are very close to each other
// tf = all(abs(a-b) <= sqrt(eps)*max(abs(a),abs(b)));
//
#line 178 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMline(178);
#line 178 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
tf = all(mwVe(abs(mwVa(a, "a") - mwVa(b, "b"))) <= mwVe(sqrt(mwArray(2.220446049250313e-16))) * mwVe(max(mwVe(abs(mwVa(a, "a"))), mwVe(abs(mwVa(b, "b"))))));
#line 178 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mwValidateOutput(tf, 1, nargout_, "tf", "contours/veryclose");
#line 178 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMlineFunctionReturn()
#line 178 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
return tf;
//
//
//
#line 179 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
mclMlineExitFunctionReturn();
#line 179 "D:\\matlab\\matlab\\toolbox\\matlab\\specgraph\\contours.m"
}