网站大量收购闲置独家精品文档,联系QQ:2885784924

-图形学实验报告-二维基本变换.docxVIP

  1. 1、本文档共12页,可阅读全部内容。
  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文档。上传文档
查看更多
-图形学实验报告-二维基本变换

实验目的和要求 利用VC6.0编写二维基本几何变换算法的实现。实现平移,比例,旋转等变换。 算法原理介绍 齐次坐标表示法就是用N+1维向量来表示一个N维向量。在齐次坐标系统中,点(X,Y)用(X,Y,H)来表达,其中H为非零的一个任意数。点(X,Y)的标准齐次坐标表达为(X/H,Y/H,1),由于H是一个任意非零常量,为了简便起见,我们通常取H=1。齐次坐标系统中的点(X,Y,1)包含有笛卡尔坐标上的点(X,Y)。 平移变换: 比例变换: 旋转变换: 对称变换: 关于x轴对称: 关于y轴对称: 关于原点对称: 关于y=x对称: 关于y=-x对称: 错切变换: 当b=0时: (x` y` 1)=(x+cy y 1)。图形的y坐标不变。 当c0:图形沿+x方向作错切位移。ABCD→A1B1C1D1 当c0:图形沿-x方向作错切位移。ABCD→ A2B2C2D2 当c=0时, (x` y` 1)=(x bx+y 1):图形的x坐标不变。 当b0:图形沿+y方向作错切位移。ABCD→ A1B1C1D1 当b0:图形沿-y方向作错切位移。ABCD→ A2B2C2D2 当b不等于0且c不等于0时, (x` y` 1)=(x+cy bx+y 1) :图形沿x,y两个方向作错切位移。 ∴错切变换引起图形角度关系的改变,甚至导致图形发生变形。 程序核心源代码 void CChangeView::Tmove(double Tx,double Ty) //平移变换矩阵 { ClearMatrix(TM); RedrawWindow(); TM[0][0]=1; TM[1][1]=1; TM[2][0]=Tx; TM[2][1]=Ty; TM[2][2]=1; Calculate(P,TM); AfxGetMainWnd()-SetWindowText(二维几何变换-平移变换); Draw(P,p3); } void CChangeView::Tscale(double Sx,double Sy) //比例变换矩阵 { ClearMatrix(TS); RedrawWindow(); TS[0][0]=Sx; TS[1][1]=Sy; TS[2][2]=1; Calculate(P,TS); AfxGetMainWnd()-SetWindowText(二维几何变换-比例变换); Draw(P,p3); } void CChangeView::Trotate(double thta)//旋转变换矩阵 { ClearMatrix(TR); RedrawWindow(); TR[0][0]=cos(thta*PI/180); TR[0][1]=sin(thta*PI/180); TR[1][0]=-sin(thta*PI/180); TR[1][1]=cos(thta*PI/180); TR[2][2]=1; Calculate(P,TR); AfxGetMainWnd()-SetWindowText(二维几何变换-旋转变换); Draw(P,p3); } void CChangeView::Treflect(double Fx,double Fy) //反射变换矩阵 { ClearMatrix(TF); RedrawWindow(); TF[0][0]=Fx; TF[1][1]=Fy; TF[2][2]=1; Calculate(P,TF); AfxGetMainWnd()-SetWindowText(二维几何变换-反射变换); Draw(P,p3); } void CChangeView::Treform(double b,double c) //错切变换矩阵 { ClearMatrix(TC); RedrawWindow(); TC[0][0]=1; TC[0][1]=b; TC[1][0]=c; TC[1][1]=1; TC[2][2]=1; Calculate(P,TC); AfxGetMainWnd()-SetWindowText(二维几何变换-错切变换); Draw(P,p3); } void CChangeView::OnMENUup() { // TODO: Add your command handler code here Tmove(0,10); } void CChangeView::OnMENUdown() { // TODO: Add your

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档