4、5题共同的前置科技:齐次坐标
基本变换
1.比例变换:
2.对称变换:
3.错切变换
4.旋转变换
相对于坐标系原点旋转θ \thetaθ角。
5.平移变换
级联变换
不属于五种基本变换的都属于级联变换。
示例:绕任意点旋转
代码
注:代码就只是把上面的公式敲一遍而已,来自北极星实验
//int xp = MaxX() / 2; //int yp = MaxY() / 2; //此处旋转中心P点为屏幕中心 //pnew为新的坐标 //p0为原坐标 for (int i = 0; i < 17; i++){ pnew[i].x = p0[i].x * cos(theta) - p0[i].y * sin(theta) + xp - xp * cos(theta) + yp * sin(theta); pnew[i].y = p0[i].x * sin(theta) + p0[i].y * cos(theta) - xp * sin(theta) + yp - yp * cos(theta); } drawPolaris(pDC, pnew);//只改变每个顶点坐标,顶点间的拓扑关系(连接关系)不变
示例:以任意直线轴对称
代码
注:代码就只是把上面的公式敲一遍而已,来自北极星实验
double A = -2, B = 1, C = 800; double alpha = atan(( - 1.0 * A) / (1.0 * B)); for (int i = 0; i < 17; i++) { pnew[i].x = p0[i].x * cos(2 * alpha) + p0[i].y * sin(2 * alpha) + (cos(2 * alpha) - 1) * C / A; pnew[i].y = p0[i].x * sin(2 * alpha) + p0[i].y * -cos(2 * alpha) + sin(2 * alpha) * C / A; } drawPolaris(pDC, p0); drawPolaris(pDC, pnew);
5.三维图形几何变换
基本变换
比例变换
对称变换
包括对原点、对坐标轴和对坐标平面的变换。
错切变换
错切变换指三维立体沿着x,y,z三个方向错切,是画斜轴测图的基础。
旋转变换
平移变换
要注意的问题
复杂变换