实验五二维几何变换.docVIP

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

实验五 二维几何变换 一、实验目的 进一步加深对常用的二维几何变换的理解,如平移、旋转、放大缩小等。掌握变换顺序和变换矩阵。 二、实验任务 通过二维几何变换的数学模型,编写平移、旋转、放缩、对称变换程序; 三、实验内容和实验步骤 1.平移变换 将图形上的点(x,y)分别在x方向和y方向分别移动dx和dy,则变换后的(x’,y’)坐标值为: x’=x+dx , y’=y+dy 变换矩阵表示为: [x’ y’ 1]=[x y 1] 下面程序通过一个正弦曲线,来进行平移变换。 步骤1:建立MoveCmd工程,在OnDraw()函数中输入如下代码,生成正弦曲线; void CMoveCmdView::OnDraw(CDC* pDC) { CMoveCmdDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here int x,y,px,py,xx,yy,dx,dy; double hx; CPoint tp; for(x=-180;x=180;x++) { hx=x*3.1415926/180; y=(int)(100*sin(hx)); //正弦函数 px=320+x;py=240-y; tp.x=px;tp.y=py; pDC-SetPixel(tp,RGB(255,0,0)); } } 注:由于使用了数学函数sin(),所以应在程序头部加入:#include “math.h”。 步骤2:将曲线沿x方向,按每隔10个像素平移一次,显示结果; 将for(x=-180;x=180;x++){…}插入以下循环语句内: for (xx=-50;xx=50;xx=xx+10) {} 并且将px=320+x改为: px=320+x+xx。 重新编译、运行,察看运行结果。 步骤3:将曲线沿y方向,按每隔10个像素平移一次,显示结果; 将for(x=-180;x=180;x++){…}插入以下循环语句内: for (yy=-50;yy=50;yy=yy+10){} 将py=240-y修改为 py=240-y-yy; 重新编译、运行,察看运行结果。 步骤4:编写dx=80,dy=-50时,程序运行结果。 在for(x=-180;x=180;x++){…}前加入语句:dx=80;dy=-50; px=320+x;py=240-y;修改为:px=320+x+dx;py=240-y+dy; 2.旋转变换 将图形上的点(x,y)旋转θ角度,得到新的坐标(x’,y’)为: x’=xcosθ-ysinθ, y’=xsinθ+ycosθ; 变换矩阵表示为: [x’ y’ 1]=[x y 1] 下面程序通过一个正弦曲线,从0~180度,每隔10度旋转一次。 步骤1:建立工程RotateCmd,在OnDraw()中编写程序如下: void CRotateCmdView::OnDraw(CDC* pDC) { CRotateCmdDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here int x,y,px,py,xx,yy,dx,dy,ang; double hx,hd; CPoint tp; for (ang=0;ang=180;ang=ang+10) { hd=ang*3.1415926/180; for(x=-180;x=180;x++) { hx=x*3.1415926/180; y=(int)(100*sin(hx)); //正弦函数 px=320+(x*cos(hd)-y*sin(hd));py=240-(x*sin(hd)+y*cos(hd)); //旋转后的坐标 tp.x=px;tp.y=py; pDC-SetPixel(tp,RGB(255,0,0)); } } } 注:由于使用了数学函数sin(),所以应在程序头部加入:#include “math.h”。 3.放大缩小变换 放大缩小变换公式为:x’=x..Sx, y’=y.Sy; 其中Sx, Sy分别为x,y方向的放缩比例系数。 变换矩阵表达式为: [x’ y’ 1]=[x y 1] 下面通过不同的比例系数来显示程序运行结果。 (1)Sx=Sy= 1.5;等比例放大 (2)Sx=Sy= 0.5;等比例缩小 (3)S

文档评论(0)

juhui05 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档