二维复合矩阵编程实例——任意的反射轴的反射变化

这篇博客探讨了二维图像的几何变换,包括平移、比例、旋转、反射和错切。重点介绍了如何使用复合矩阵编程实现任意图形关于反射轴y=a+bx的反射变换,详细解释了变换步骤,并提供了具体的代码示例和运行结果。
摘要由CSDN通过智能技术生成

二维图像的几何变化

二维图形基本几何变换是指相对于坐标原点和坐标轴进行的几何变换,包括平移(Translate)、比例(Scale)、旋转(Rotate)、反射(Reflect)和错切(shear)5种变换。物体变换物体变换是通过变换物体上每一个顶点实现的,因此以点的二维基本几何变换为例讲解二维图形基本几何变换矩阵。
在这里插入图片描述
在这里插入图片描述

平移变换:

在这里插入图片描述

比例变换:

在这里插入图片描述

对称变换:

在这里插入图片描述

旋转变换:

在这里插入图片描述

错切变换:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述 ★复合矩阵编程实例:任一图形关于任意的反射轴y=a+bx的反射变换。

在这里插入图片描述
解:(1)将坐标原点平移到(0,a)处
在这里插入图片描述
(2)将反射轴(已平移后的直线)按顺时针方向旋转θ角,使之与x轴重合
在这里插入图片描述
(3)图形关于x轴的反射变换
在这里插入图片描述
(4)将反射轴逆时针旋转θ角
在这里插入图片描述
(5)恢复反射轴的原始位置
在这里插入图片描述
因此T=T₁R(-θ)T₂R(θ)T₃

具体代码如下:

#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
GLsizei winWidth = 600, winHeight = 600;/* 初始化显示窗口大小 */
GLfloat xwcMin = 0.0, xwcMax = 250.0; /* 设置世界坐标系的显示范围 */
GLfloat ywcMin = 0.0, ywcMax = 250.0;
class wcPt2D/* 定义二维点数据结构 */
{
   
public:
 GLfloat x, y;
};
typedef GLfloat Matrix3x3[3][3];
Matrix3x3 matComposite; //定义复合矩阵
void init(void)
{
   
 glClearColor(1.0f, 1.0f, 1.0f, 1.0f);//设置窗口背景颜色为白色
}
void matrix3x3SetIdentity(Matrix3x3 m)       /* 构建3*3的单位矩阵 */
{
   
 GLint i, j;
 for (i = 0; i < 3; i++)
  for (j = 0; j < 3; j++)
   m[i][j] = (i == j);
}
void matrix3x3PreMultiply(Matrix3x3 a, Matrix3x3 b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值