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

📄 ball.c

📁 精通Matlab与C_C++混合程序设计.rar 是精通Matlab与C_C++混合程序设计 这本书的配套源码
💻 C
📖 第 1 页 / 共 4 页
字号:
    #line 67 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".h1", mlfNFill(1, mlfDoubleMatrix(1, 4, _array3_, (double *)NULL), mlfDoubleMatrix(1, 4, _array1_, (double *)NULL), mclMinus(mlfScalar(1), mlfDoubleMatrix(1, 3, _array0_, (double *)NULL)), NULL));
    /*
     * handles.h2 = fill([0 1 1 0],[0 0 1 1],1-[0.5 0.7 0.3]);
     */
    #line 68 "f:\\book\\ball\\ball.m"
    mclMline(68);
    #line 68 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".h2", mlfNFill(1, mlfDoubleMatrix(1, 4, _array3_, (double *)NULL), mlfDoubleMatrix(1, 4, _array1_, (double *)NULL), mclMinus(mlfScalar(1), mlfDoubleMatrix(1, 3, _array0_, (double *)NULL)), NULL));
    /*
     * %初始化两个弹球
     * handles.direction1 = 30/180*2*pi+rand(1,1)*30/180*2*pi;%方向
     */
    #line 70 "f:\\book\\ball\\ball.m"
    mclMline(70);
    #line 70 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".direction1", mclPlus(mlfScalar(1.0471975511965976), mclMtimes(mclMtimes(mclMrdivide(mclMtimes(mlfNRand(1, mlfScalar(1), mlfScalar(1), NULL), mlfScalar(30)), mlfScalar(180)), mlfScalar(2)), mlfScalar(3.141592653589793))));
    /*
     * handles.direction2 = 30/180*2*pi+rand(1,1)*30/180*2*pi;
     */
    #line 71 "f:\\book\\ball\\ball.m"
    mclMline(71);
    #line 71 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".direction2", mclPlus(mlfScalar(1.0471975511965976), mclMtimes(mclMtimes(mclMrdivide(mclMtimes(mlfNRand(1, mlfScalar(1), mlfScalar(1), NULL), mlfScalar(30)), mlfScalar(180)), mlfScalar(2)), mlfScalar(3.141592653589793))));
    /*
     * axis off 
     */
    #line 72 "f:\\book\\ball\\ball.m"
    mclMline(72);
    #line 72 "f:\\book\\ball\\ball.m"
    mclPrintAns(&ans, mlfNAxis(0, NULL, NULL, mxCreateString("off"), NULL));
    /*
     * handles.go = 1;
     */
    #line 73 "f:\\book\\ball\\ball.m"
    mclMline(73);
    #line 73 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".go", mlfScalar(1));
    /*
     * handles.position1 = [0.5 0.5];%位置
     */
    #line 74 "f:\\book\\ball\\ball.m"
    mclMline(74);
    #line 74 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".position1", mlfDoubleMatrix(1, 2, _array4_, (double *)NULL));
    /*
     * handles.position2 = [0.3 0.3];
     */
    #line 75 "f:\\book\\ball\\ball.m"
    mclMline(75);
    #line 75 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".position2", mlfDoubleMatrix(1, 2, _array5_, (double *)NULL));
    /*
     * handles.dx = 0.01;
     */
    #line 76 "f:\\book\\ball\\ball.m"
    mclMline(76);
    #line 76 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".dx", mlfScalar(0.01));
    /*
     * handles.dy = 0.01;
     */
    #line 77 "f:\\book\\ball\\ball.m"
    mclMline(77);
    #line 77 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".dy", mlfScalar(0.01));
    /*
     * handles.xdata1 = 0.03*cos(0:0.1:2*pi)+handles.position1(1);%弹球1的区域坐标
     */
    #line 78 "f:\\book\\ball\\ball.m"
    mclMline(78);
    #line 78 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".xdata1", mclFeval(mclValueVarargout(), mlxPlus, mclMtimes(mlfScalar(0.03), mlfCos(mlfDoubleMatrix(1, 63, _array6_, (double *)NULL))), mlfIndexRef(mclVa(handles, "handles"), ".position1(?)", mlfScalar(1)), NULL));
    /*
     * handles.ydata1 = 0.03*sin(0:0.1:2*pi)+handles.position1(2);
     */
    #line 79 "f:\\book\\ball\\ball.m"
    mclMline(79);
    #line 79 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".ydata1", mclFeval(mclValueVarargout(), mlxPlus, mclMtimes(mlfScalar(0.03), mlfSin(mlfDoubleMatrix(1, 63, _array6_, (double *)NULL))), mlfIndexRef(mclVa(handles, "handles"), ".position1(?)", mlfScalar(2)), NULL));
    /*
     * handles.xdata2 = 0.03*cos(0:0.1:2*pi)+handles.position2(1);%弹球2的区域坐标
     */
    #line 80 "f:\\book\\ball\\ball.m"
    mclMline(80);
    #line 80 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".xdata2", mclFeval(mclValueVarargout(), mlxPlus, mclMtimes(mlfScalar(0.03), mlfCos(mlfDoubleMatrix(1, 63, _array6_, (double *)NULL))), mlfIndexRef(mclVa(handles, "handles"), ".position2(?)", mlfScalar(1)), NULL));
    /*
     * handles.ydata2 = 0.03*sin(0:0.1:2*pi)+handles.position2(2);
     */
    #line 81 "f:\\book\\ball\\ball.m"
    mclMline(81);
    #line 81 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&handles, ".ydata2", mclFeval(mclValueVarargout(), mlxPlus, mclMtimes(mlfScalar(0.03), mlfSin(mlfDoubleMatrix(1, 63, _array6_, (double *)NULL))), mlfIndexRef(mclVa(handles, "handles"), ".position2(?)", mlfScalar(2)), NULL));
    /*
     * while handles.go < 100
     */
    #line 82 "f:\\book\\ball\\ball.m"
    mclMline(82);
    #line 82 "f:\\book\\ball\\ball.m"
    while (mlfTobool(mclFeval(mclValueVarargout(), mlxLt, mlfIndexRef(mclVa(handles, "handles"), ".go"), mlfScalar(100), NULL))) {
        /*
         * %计算弹球的运动的下一个位置
         * [handles.xdata1,handles.ydata1,handles.position1,handles.direction1]=...
         * getnextball(handles.xdata1,handles.ydata1,...
         */
        #line 85 "f:\\book\\ball\\ball.m"
        mclMline(85);
        #line 85 "f:\\book\\ball\\ball.m"
        mclFeval(mlfIndexVarargout(&handles, ".xdata1", &handles, ".ydata1", &handles, ".position1", &handles, ".direction1", NULL), mlxBall_getnextball, mlfIndexRef(mclVa(handles, "handles"), ".xdata1"), mlfIndexRef(mclVa(handles, "handles"), ".ydata1"), mlfIndexRef(mclVa(handles, "handles"), ".position1"), mlfIndexRef(mclVa(handles, "handles"), ".direction1"), mlfIndexRef(mclVa(handles, "handles"), ".dx"), mlfIndexRef(mclVa(handles, "handles"), ".dy"), NULL);
        /*
         * handles.position1,handles.direction1,handles.dx,...
         * handles.dy);
         * [handles.xdata2,handles.ydata2,handles.position2,handles.direction2]=...
         * getnextball(handles.xdata2,handles.ydata2,...
         */
        #line 89 "f:\\book\\ball\\ball.m"
        mclMline(89);
        #line 89 "f:\\book\\ball\\ball.m"
        mclFeval(mlfIndexVarargout(&handles, ".xdata2", &handles, ".ydata2", &handles, ".position2", &handles, ".direction2", NULL), mlxBall_getnextball, mlfIndexRef(mclVa(handles, "handles"), ".xdata2"), mlfIndexRef(mclVa(handles, "handles"), ".ydata2"), mlfIndexRef(mclVa(handles, "handles"), ".position2"), mlfIndexRef(mclVa(handles, "handles"), ".direction2"), mlfIndexRef(mclVa(handles, "handles"), ".dx"), mlfIndexRef(mclVa(handles, "handles"), ".dy"), NULL);
        /*
         * handles.position2,handles.direction2,handles.dx,...
         * handles.dy);
         * %更新弹球的位置
         * set(handles.h1,'XData',handles.xdata1,'Ydata',handles.ydata1);  
         */
        #line 93 "f:\\book\\ball\\ball.m"
        mclMline(93);
        #line 93 "f:\\book\\ball\\ball.m"
        mclAssignAns(&ans, mlfNSet(0, mlfIndexRef(mclVa(handles, "handles"), ".h1"), mxCreateString("XData"), mlfIndexRef(mclVa(handles, "handles"), ".xdata1"), mxCreateString("Ydata"), mlfIndexRef(mclVa(handles, "handles"), ".ydata1"), NULL));
        /*
         * set(handles.h2,'XData',handles.xdata2,'Ydata',handles.ydata2);  
         */
        #line 94 "f:\\book\\ball\\ball.m"
        mclMline(94);
        #line 94 "f:\\book\\ball\\ball.m"
        mclAssignAns(&ans, mlfNSet(0, mlfIndexRef(mclVa(handles, "handles"), ".h2"), mxCreateString("XData"), mlfIndexRef(mclVa(handles, "handles"), ".xdata2"), mxCreateString("Ydata"), mlfIndexRef(mclVa(handles, "handles"), ".ydata2"), NULL));
        /*
         * drawnow;    
         */
        #line 95 "f:\\book\\ball\\ball.m"
        mclMline(95);
        #line 95 "f:\\book\\ball\\ball.m"
        mlfDrawnow(NULL);
        /*
         * pause(0.03);%程序运行暂停0.03s,用于控制弹球的运动速度
         */
        #line 96 "f:\\book\\ball\\ball.m"
        mclMline(96);
        #line 96 "f:\\book\\ball\\ball.m"
        mlfPause(mlfScalar(0.03));
    /*
     * end
     */
    #line 97 "f:\\book\\ball\\ball.m"
    mclMline(97);
    #line 97 "f:\\book\\ball\\ball.m"
    }
    /*
     * 
     * % Update handles structure
     * guidata(hObject, handles);
     */
    #line 100 "f:\\book\\ball\\ball.m"
    mclMline(100);
    #line 100 "f:\\book\\ball\\ball.m"
    mclAssignAns(&ans, mlfNGuidata(0, mclVa(hObject, "hObject"), mclVa(handles, "handles")));
    #line 100 "f:\\book\\ball\\ball.m"
    mxDestroyArray(ans);
    #line 100 "f:\\book\\ball\\ball.m"
    mxDestroyArray(varargin);
    #line 100 "f:\\book\\ball\\ball.m"
    mxDestroyArray(handles);
    #line 100 "f:\\book\\ball\\ball.m"
    mxDestroyArray(eventdata);
    #line 100 "f:\\book\\ball\\ball.m"
    mxDestroyArray(hObject);
    #line 100 "f:\\book\\ball\\ball.m"
    mclSetCurrentLocalFunctionTable(save_local_function_table_);
    /*
     * 
     * % UIWAIT makes ball wait for user response (see UIRESUME)
     * % uiwait(handles.figure1);
     * 
     * 
     * % --- Outputs from this function are returned to the command line.
     */
    #line 106 "f:\\book\\ball\\ball.m"
    mclMline(106);
    #line 106 "f:\\book\\ball\\ball.m"
    mclMlineExitFunction();
    #line 106 "f:\\book\\ball\\ball.m"
}

/*
 * The function "Mball_ball_OutputFcn" is the implementation version of the "ball/ball_OutputFcn" M-function from file "f:\book\ball\ball.m" (lines 107-116). 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 varargout = ball_OutputFcn(hObject, eventdata, handles)
 */
#line 107 "f:\\book\\ball\\ball.m"
static mxArray * Mball_ball_OutputFcn(int nargout_, mxArray * hObject, mxArray * eventdata, mxArray * handles) {
    #line 107 "f:\\book\\ball\\ball.m"
    mclMlineEnterFunction("f:\\book\\ball\\ball.m", "ball/ball_OutputFcn")
    #line 107 "f:\\book\\ball\\ball.m"
    mexLocalFunctionTable save_local_function_table_ = mclSetCurrentLocalFunctionTable(&_local_function_table_ball);
    #line 107 "f:\\book\\ball\\ball.m"
    mxArray * varargout = NULL;
    #line 107 "f:\\book\\ball\\ball.m"
    mclCopyArray(&hObject);
    #line 107 "f:\\book\\ball\\ball.m"
    mclCopyArray(&eventdata);
    #line 107 "f:\\book\\ball\\ball.m"
    mclCopyArray(&handles);
    /*
     * % varargout  cell array for returning output args (see VARARGOUT);
     * % hObject    handle to figure
     * % eventdata  reserved - to be defined in a future version of MATLAB
     * % handles    structure with handles and user data (see GUIDATA)
     * 
     * % Get default command line output from handles structure
     * varargout{1} = handles.output;
     */
    #line 114 "f:\\book\\ball\\ball.m"
    mclMline(114);
    #line 114 "f:\\book\\ball\\ball.m"
    mlfIndexAssign(&varargout, "{?}", mlfScalar(1), mlfIndexRef(mclVa(handles, "handles"), ".output"));
    #line 114 "f:\\book\\ball\\ball.m"
    mxDestroyArray(handles);
    #line 114 "f:\\book\\ball\\ball.m"
    mxDestroyArray(eventdata);
    #line 114 "f:\\book\\ball\\ball.m"
    mxDestroyArray(hObject);
    #line 114 "f:\\book\\ball\\ball.m"
    mclSetCurrentLocalFunctionTable(save_local_function_table_);
    #line 114 "f:\\book\\ball\\ball.m"
    mclMlineFunctionReturn()
    #line 114 "f:\\book\\ball\\ball.m"
    return varargout;
    /*
     * 
     */
    #line 115 "f:\\book\\ball\\ball.m"
    mclMlineExitFunctionReturn();
    #line 115 "f:\\book\\ball\\ball.m"
}

/*
 * The function "Mball_getnextball" is the implementation version of the "ball/getnextball" M-function from file "f:\book\ball\ball.m" (lines 116-158). 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 [newxdata,newydata,newposition,newdire]=...
 */
#line 116 "f:\\book\\ball\\ball.m"
static mxArray * Mball_getnextball(mxArray * * newydata, mxArray * * newposition, mxArray * * newdire, int nargout_, mxArray * xdata, mxArray * ydata, mxArray * preposition, mxArray * predire, mxArray * dx, mxArray * dy) {
    #line 116 "f:\\book\\ball\\ball.m"
    mclMlineEnterFunction("f:\\book\\ball\\ball.m", "ball/getnextball")
    #line 116 "f:\\book\\ball\\ball.m"
    mexLocalFunctionTable save_local_function_table_ = mclSetCurrentLocalFunctionTable(&_local_function_table_ball);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -