#include #include "mex.h" #include "matrix.h" #include "geometry.h" void mexFunction (int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[]) { char str[256]; mxArray *proj, *dist; double *l1, *l2, *r, *proj_p, *dist_p; int flag; if (nrhs <3 || nrhs>4) mexErrMsgTxt ("Invalid number of input arguments"); if (mxGetM(prhs[0])!=1 || mxGetN(prhs[0])!=3) mexErrMsgTxt ("Invalid dimension for input argument 1"); if (mxGetM(prhs[1])!=1 || mxGetN(prhs[1])!=3) mexErrMsgTxt ("Invalid dimension for input argument 2"); if (mxGetM(prhs[2])!=1 || mxGetN(prhs[2])!=3) mexErrMsgTxt ("Invalid dimension for input argument 3"); l1 = mxGetData (prhs[0]); l2 = mxGetData (prhs[1]); r = mxGetData (prhs[2]); if (nrhs==4) flag = (int)mxGetScalar (prhs[3]); else flag = 0; proj = mxCreateDoubleMatrix (1, 3, mxREAL); dist = mxCreateDoubleMatrix (1, 1, mxREAL); proj_p = mxGetData (proj); dist_p = mxGetData (dist); (*dist_p) = plinproj(l1, l2, r, proj_p, flag); /* assign the output parameters */ plhs[0] = proj; if (nlhs>1) plhs[1] = dist; return; }