限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410

变换矩阵怎么求_变换矩阵_旋转变换矩阵

第一次发公众号文章就是发这题的题解,现在我想通过新学的线性代数知识来解决这一道题。关于矩阵的更基础的知识在前面发的文章有交待:

首先要理解线性变换是什么意思,线性变换定义如下:

旋转变换矩阵_变换矩阵_变换矩阵怎么求

懵不懵?反正我是懵的,再换一个说法也许大家都能懂。

如果一个变换同时具有以下 2 条性质,则它是一个线性变换。

1)变换前后,所有的直线仍然是直线。

2)变换前后,原点保持不变。

常见的矩阵变换还有如下几种:

旋转变换

想把一个图形逆时针方向旋转角度θ变换矩阵,可以在前面乘上如下矩阵:

于是就可以得到如下效果:

变换矩阵怎么求_旋转变换矩阵_变换矩阵

伸缩变换

想把一个图形拉伸k倍变换矩阵,可以在前面乘上如下矩阵:

于是就可以得到如下效果:

旋转变换矩阵_变换矩阵怎么求_变换矩阵

翻转变换

前面分别乘以如下两个矩阵:

实现的效果就是把图片关于x轴翻转,以及关于y轴翻转:

旋转变换矩阵_变换矩阵_变换矩阵怎么求

剪切变换

剪切变换就是把一张图片斜着拉伸,比如下面这个效果:

旋转变换矩阵_变换矩阵怎么求_变换矩阵

当然还可以对图像进行多次变换,比如本题打印方阵的线性变换如下:

变换矩阵_旋转变换矩阵_变换矩阵怎么求

很容易看出变换后矩阵较前矩阵旋转了-45度并拉伸2分之根号2倍,那就依次地在前边乘以相对应的矩阵:

变换矩阵怎么求_变换矩阵_旋转变换矩阵

也可通过转换前后的两已知的点求得线性转换的矩阵,比如题中7所在的位置(-3,3)点旋转后的新位置是(0,3)点。

根据矩阵乘法得方程组:

-3x-3y=0 ①

-3y+3x=3 ②

解方程组得:x=1/2 y=-1/2;

代入矩阵得:

以上计算可在草稿纸上完成,剩下的才是代码了,很显然这只是众多思路之一,纯粹应用一下新学的数学知识而已,好在代码也不复杂。

#

using std;

long n, a[1010][1010], x, y, t, k;

int main() {

cin >> n;

x = -1; //行最开始为-1

for(int i = 1; i

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410