【计算机图形学】期末复习part2:二维与三维图形变换

简介: 【计算机图形学】期末复习part2:二维与三维图形变换

4、5题共同的前置科技:齐次坐标

image.png

基本变换

1.比例变换:

image.png

2.对称变换:

image.png


3.错切变换

image.png


4.旋转变换

相对于坐标系原点旋转θ \thetaθ角。image.png

5.平移变换

image.png

级联变换

不属于五种基本变换的都属于级联变换。

示例:绕任意点旋转

image.png


代码

注:代码就只是把上面的公式敲一遍而已,来自北极星实验

//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);//只改变每个顶点坐标,顶点间的拓扑关系(连接关系)不变

示例:以任意直线轴对称

image.png

代码

注:代码就只是把上面的公式敲一遍而已,来自北极星实验

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.三维图形几何变换


image.png

image.png

基本变换

比例变换

image.png

对称变换

包括对原点、对坐标轴和对坐标平面的变换。

image.png

错切变换

错切变换指三维立体沿着x,y,z三个方向错切,是画斜轴测图的基础。

image.png


旋转变换

image.png


平移变换

image.png

要注意的问题

image.png

复杂变换

image.png

image.png


目录
打赏
0
0
0
0
54
分享
相关文章
【计算机图形学】实验二 用扫描线算法实现多边形填充
【计算机图形学】实验二 用扫描线算法实现多边形填充
356 2
【计算机图形学】实验四 二维图形的缩放、旋转,平移,组合变换
【计算机图形学】实验四 二维图形的缩放、旋转,平移,组合变换
402 2
|
10月前
|
MATLAB | SCI 绘图配色第七期 | 二维纵轴堆叠柱状图 | 雾山五行
MATLAB | SCI 绘图配色第七期 | 二维纵轴堆叠柱状图 | 雾山五行
139 0
跟着 Cell 学作图 | 柱状图+误差棒+蜂群图
跟着 Cell 学作图 | 柱状图+误差棒+蜂群图
247 0
【计算机图形学】实验三:二维图形变换
【计算机图形学】实验三:二维图形变换
323 0
【计算机图形学】实验三:二维图形变换
【计算机图形学】期末复习part1:直线与曲线的绘制
【计算机图形学】期末复习part1:直线与曲线的绘制
220 0
【计算机图形学】期末复习part1:直线与曲线的绘制
每日一题—— 三维形体投影面积
每日一题—— 三维形体投影面积
155 0
每日一题—— 三维形体投影面积