1、 MATLAB 课程设计报告 题题 目目 几何作图几何作图 学学 院院 电气信息学院电气信息学院 专专 业业 电子信息科学与技术电子信息科学与技术 学生姓名学生姓名 学学 号号 年级年级 11 11 级级 教教 师师 二二一三年七月十三日一三年七月十三日 几何作图 -MATLAB 课程设计报告- 2 1、设计名设计名称:称:几何作图(1.1) 2 2、设计目标、设计目标/ /设计要求(基本目标及扩展)设计要求(基本目标及扩展) 根据给定的 API,编写 MATLAB 函数,实现多条线段作图。 function Y = ex03_drawline(I, x, y) % 线段作图 % I : 输入
2、画板矩阵, uint8 % x : 线段各端点的x 坐标, 行向量, 其中(x1,x2)是第一条线段的, (x3,x4) 是第二条的,如此类推 % y : 线段各端点的y 坐标, 行向量, 其中(y1,y2)是第一条线段的, (y3,y4) 是第二条的,如此类推 % Y : 输出画板矩阵, uint8 扩展 1:根据给定的 API,编写 MATLAB 函数,实现圆作图。 function Y = ex03_drawcircle(I, x, y, r) % 圆作图 % I : 输入画板矩阵, uint8 % x : 圆心的 x 坐标,行向量 % y : 圆心的 y 坐标,行向量 % r : 圆的
3、半径,行向量 % Y : 输出画板矩阵, uint8 扩展 2:画虚线、点划线 几何作图 -MATLAB 课程设计报告- 3 3 3、设计方案设计方案 (1) 、直线 设计方案: 1、根据给出的端点,计算所在直线方程 2、根据所得方程,计算出所在两端点间的(x,y)坐标 对 3、I 中以计算所得(x,y)坐标对为下标的元素置为 v (2) 、圆 设计方案: 1、根据所给圆心、半径计算圆的方程 2、根据所得方程,计算圆上每个点的坐标对(x,y) 3、I 中以(x,y)为坐标的点置为 0 4 4、算法描述、算法描述 (1)直线 1、根据给出的两端点算出直线斜率 k=(y1-y2)/(x1-x2)。
4、 (x10,y00,r0) 2、由圆心计算圆的边界,即 x1=x0-r,x2=r+x0;y1=y2=y0 3、从 x1 开始到 x2 把中间步长为 1 的 x 带入方程中算得 坐标对(x_k,+y_k) 4、在 I 矩阵中,把所有算出的(x_k,+y_k)坐标对的值 置为 0 5 5、算法实现及分析算法实现及分析 (1 1) 、直线) 、直线 funcfunctiontion Y = = ex03_drawline( (I, , x, , y) ) %若斜率不存在,即为竖直的直线,则无需求斜率直接画 ifif ( (x( (1) ) = x( (2) I( (min( (y):):max( (
5、y),),x( (1)=)=0; ; elseelse %1、根据给出的两端点算出直线斜率 k=(y1-y2)/(x1-x2)。 (x1 1 | |a0,r0)(x00,y00,r0) %2%2、由圆心计算圆的边界,即、由圆心计算圆的边界,即x1=x0x1=x0- -r,x2=r+x0;y1=y2=y0r,x2=r+x0;y1=y2=y0 x_1= =x- -r; ; x_2= =x+ +r; ; %3%3、从、从x1x1开始到开始到x2x2把中间步长为把中间步长为1 1的的x x带入方程中算得坐标对带入方程中算得坐标对 (x_k,+y_kx_k,+y_k) forfor x_k= =x_1: :x_2 y_k1= =sqrt( (r 2- -( (x_k- -x)2)+)+y; ; 几何作图 -MATLAB 课程设计报告- 7 y_k2= =- -sqrt( (r 2- -( (x_k- -x)2)+)+y; ; y_k1= =round( (y_k1);); y_k2= =round( (y_k2);); %4%4、在、在I I矩阵中,把所有算出的(矩阵中,把所有算出的(x_k,+y_kx_k,+y_k)坐标对的值置)坐标对的值置