标签:html width nsf 三角形 程序代码 使用 cat void etc
编译环境:VS2017
编译框架:MFC
实验内容:显示一个三角形,并将其绕中心进行旋转、缩放以及平移等操作
实验步骤:
1.打开VS2017,并创建MFC项目,具体方法参见:http://www.cnblogs.com/junjunjun123/p/8811150.html
2.在新建的执行程序中加入如下代码
1 void CMFCApplication1View::OnGeo_transfor() 2 { 3 // TODO: 在此添加命令处理程序代码 4 5 CDC *pDC=GetDC(); 6 double Q=15; //顺时针旋转角度(单位为度) 7 double c=0.5,d=0.5; //x,y缩放倍数 8 double e=100,f=0; //x,y平移量 9 10 //转换为弧度 11 Q=Q/180*3.1415926; 12 13 //初始三角形 14 CPoint pts[3]; 15 //几何变换后的三角形 16 CPoint zf[3]; 17 //存放临时的初始坐标 18 double TJ[3]; 19 //存放临时的转换后的坐标 20 double SX[3]; 21 22 //给坐标点赋初始值 23 pts[0].x=100,pts[0].y=50; 24 pts[1].x=300,pts[1].y=50; 25 pts[2].x=200,pts[2].y=100; 26 //计算三角形的中心坐标(a,b) 27 double a=(pts[0].x+pts[1].x+pts[2].x)/3; 28 double b=(pts[0].y+pts[1].y+pts[2].y)/3; 29 30 //复合变换矩阵,将设置的几何变换参数综合到此变换矩阵中 31 double R[3][3]= 32 {{ c*cos(Q) , d*sin(Q) , 0}, 33 { -c*sin(Q) , d*cos(Q), 0}, 34 { c*(-a*cos(Q)+b*sin(Q))+a+e , d*(-a*sin(Q)-b*cos(Q))+b+f , 1}}; 35 36 37 for(int i=0;i<3;i++) //i表示三角形的第i个点 38 { 39 40 TJ[0]=pts[i].x; 41 TJ[1]=pts[i].y; 42 TJ[2]=1; 43 for(int j=0;j<3;j++) //j表示矩阵的第j列 44 { 45 SX[j]=TJ[0]*R[0][j]+TJ[1]*R[1][j]+TJ[2]*R[2][j]; 46 47 } 48 zf[i].x=SX[0]; 49 zf[i].y=SX[1]; 50 } 51 输出初始的图形 52 pDC->Polygon(pts,3); 53 输出集合变换后的图形 54 pDC->Polygon(zf,3); 55 56 /*CRect rectDlg; 57 GetClientRect(rectDlg);//获取窗体的大小 58 int h=rectDlg.Height(); 59 int w=rectDlg.Width(); 60 */ 61 62 }
标签:html width nsf 三角形 程序代码 使用 cat void etc
原文地址:https://www.cnblogs.com/junjunjun123/p/9011952.html