matlab语言-课程设计-- 几何作图.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
matlab语言-课程设计-- 几何作图

???????几何作图??????? MATLAB课程设计报告 题 目 几何作图 学 院 电气信息学院 专 业 电子信息科学与技术 学生姓名 田绍宏   学 号 2011052466 年级 11 级 教 师 郭江凌 二〇一三年七月十三日 设计名称:几何作图(1.1) 2、设计目标/设计要求(基本目标及扩展) 根据给定的API,编写MATLAB函数,实现多条线段作图。 function Y = ex03_drawline(I, x, y) % 线段作图 % I : 输入画板矩阵, 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 : 圆的半径,行向量 % Y : 输出画板矩阵, uint8 扩展2:画虚线、点划线 设计方案 (1)、直线 设计方案: 根据给出的端点,计算所在直线方程 根据所得方程,计算出所在两端点间的(x,y)坐标对 I中以计算所得(x,y)坐标对为下标的元素置为v (2)、圆 设计方案: 根据所给圆心、半径计算圆的方程 根据所得方程,计算圆上每个点的坐标对(x,y) 3、I中以(x,y)为坐标的点置为0 4、算法描述 (1)直线 根据给出的两端点算出直线斜率k=(y1-y2)/(x1-x2)。(x1x2) 得到直线方程为:Y-y1=k*(X-x1),即Y=k*(X-x1)+y1 经过变换得Y=a*X+b,其中a=(y1-y2)/(x1-x2),b=y1-a*x1 把x1到x2之间步长为1的xk分别带入直线方程中,计算出yk 在I矩阵中把每个计算出的(xk,yk)坐标对的数值置为0 (2)、圆 1、根据圆心坐标、半径得到圆方程:(x-x0)2+(y-y0)2=r2 既 (x00,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 算法实现及分析 (1)、直线 function Y = ex03_drawline(I, x, y) %若斜率不存在,即为竖直的直线,则无需求斜率直接画 if (x(1) == x(2)) I(min(y):max(y),x(1))=0; else %1、根据给出的两端点算出直线斜率k=(y1-y2)/(x1-x2)。(x1x2) a=(y(1)-y(2))/(x(1)-x(2)); b=y(1)-a*x(1); %判断斜率的正负,选择以x或以y为基准 if (a==0) I(y(1),min(x):max(x))=0; else if (a1 |a-1) %2、得到直线方程为:Y-y1=k*(X-x1),即Y=k*(X-x1)+y1 经过变换得Y=a*X+b,其中a=(y1-y2)/(x1-x2),b=y1-a*x1 %3、把y1到y2之间步长为1的yk分别带入直线方程中,计算出xk for y_k=min(y):max(y) x_k=round((y_k-b)/a); I(y_k,x_k)=0; end else %2、得到直线方程为:Y-y1=k*(X-x1),即Y=k*(X-x1)+y1 经过变换得Y=a*X+b,其中a=(y1-y2)/(x1-x2),b=y1-a*x1 %3、把x1到x2之间步长为1的xk分别带入直线方程中,计算出yk for x_k=min(x):max(x) y_k=round(a*x_k+b);

文档评论(0)

189****6472 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档