(计算机图形学)关于任意直线的对称变换_第1页
(计算机图形学)关于任意直线的对称变换_第2页
(计算机图形学)关于任意直线的对称变换_第3页
(计算机图形学)关于任意直线的对称变换_第4页
(计算机图形学)关于任意直线的对称变换_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验3:关于任意直线的对称变换实验类型:验证,设计完成时间:3小时主要实验内容和要求:要实验任意直线的二维形状的对称更改,需要输入的直线必须是任意直线,直线的端点可以用键盘输入或鼠标选择,要进行对称转换的图形也必须是任意形状(必须至少是一个随机多边形)。对称变换,首先使用一系列简单变换分析如何构造主题所需的复合变换。本体要实施的转换可以实施为以下转换组合集:移动直线上的任意点以与坐标原点重合绕原点旋转转换的直线,使其与特定坐标轴重合将主题要求的对称变换转换为上述轴的已知图的对称变换以上、逆变换的逆序顺序依次乘以上述矩阵,求出最终复合变换矩阵任意直线上多边形的对称变换将该多边形的每个顶点转换为矩阵乘法(具有如上所述的复合变换),以获得转换后的新多边形的各个顶点坐标。按照上述过程编程,测试程序功能。源代码:#include#includeUsing namespace STDVoid Initial(void)Glclearcolor (1.0f,1.0f,1.0f,1.0f);GlMatrixMode(GL _ PROJECTION);GluOrtho2D(0.0,200.0,0.0,150.0);Class CPointPublic:int x;int y;CPoint()CPoint(int x1,int y1)X=x1Y=y1static cpoint zeromovetxy(c point p,c point xy);/将原始坐标转换为屏幕坐标XYstatic CPoint ToZero(CPoint p);/关于镜像原点static cpoint xymovetozero(c point p,c point xy);/将XY坐标转换为屏幕坐标static cpoint charge _ alline(cpointp,cpointline _ start,c point line _ end);/Ax By C=0关于镜射c point c point 33603360 zeromovetxy(c point p,cpoint xy)/将原始坐标转换为屏幕坐标XYCPoint resultInt change 3 3=1,0,0,0,1,0,-xy.x,-xy.y,1 ;Int p13=0,0,0 ;for(int j=0);j 3;j)P1j=p . x * change0jp . y * change1jchange2j;result . x=P10;result . y=P11;Return resultc point c point 33603360 to zero(c point p)/关于镜像原点CPoint resultInt change 3 3=-1,0,0,0,-1,0,0,0,1 ;Int p13=0,0,0 ;for(int j=0);j 3;j)P1j=p . x * change0jp . y * change1jchange2j;result . x=P10;result . y=P11;Return resultc point c point 33603360 xymove tozero(c point p,cpoint xy)/将XY坐标转换为屏幕坐标CPoint resultInt change 3 3=1,0,0,0,1,0,xy.x,xy.y,1 ;Int p13=0,0,0 ;for(int j=0);j 3;j)P1j=p . x * change0jp . y * change1jchange2j;result . x=P10;result . y=P11;Return resultc point c point 3363603360 charge _ alline(c pointp,cpointline _ start,cpointline _ end)/Ax By C=0对称信息双A、B、C;If(line_start.x=line_end.x)a=1;b=0;c=-line _ start . x;else if(line _ start . y=line _ end . y)a=0;b=1;c=-line _ start . y;Elsea=1000/(line _ end . x-line _ start . x);b=-1000/(line _ end . y-line _ start . y);c=1000 *(-line _ start . x/(line _ end . x-line _ start . x)line _ start . y/(line _ end)CPoint resultfloat y _ f=(-a* b * p . x a* a* p . y-b * c)/(b * b a* a);float x _ f=(-a* b * p . y b* b * p . x-a * c)/(b * b a* a);CPoint xy、m1、m2;xy . X=X _ f;xy . Y=Y _ f;m1=c point 33603360 zeromovetxy(p,xy);m2=cpoint : to zero(m1(m1);Result=XYMoveToZero(m2,xy);Return resultVoid显示(void)GL clear(GL _ COLOR _ BUFFER _ BIT);GlColor3f(1.0f,0.0f,0.0f);GlBegin(GL _ LINES);Int n、x、y、I; Cout 输入对称图形的顶点数: n;CPoint * p=new CPointn;for(I=0);IxyPi。x=xPi。y=yIf(i=0|i=1)GlVertex2i(pi)。x,pi。y);Else if(i=n-1)GlVertex2i(pi-1)。x,pi-1。y);GlVertex2i(pi)。x,pi。y);GlVertex2i(pi)。x,pi。y);GlVertex2i(p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论