`

[转]矩阵的学习<2>

阅读更多

本篇幅我们就结合Android 中的android.graphics.Matrix来具体说明,还记得我们前面说的图像旋转的矩阵:

Rotate

从最简单的旋转90度的是:

Rotate-90-Matrix

在android.graphics.Matrix中有对应旋转的函数:
Matrix matrix = new Matrix();
matrix.setRotate(90);
Test.Log(MAXTRIX_TAG,”setRotate(90):%s” , matrix.toString());

Rotate-90-Android

查看运行后的矩阵的值(通过Log输出):

Rotate-90-Android-log

与上面的公式基本完全一样(android.graphics.Matrix采用的是浮点数,而我们采用的整数)。

有了上面的例子,相信大家就可以亲自尝试了。通过上面的例子我们也发现,我们也可以直接来初始化矩阵,比如说要旋转30度:

Rotate-30-Matrix

前面给大家介绍了这么多,下面我们开始介绍图像的镜像,分为2种:水平镜像、垂直镜像。先介绍如何实现垂直镜像,什么是垂直镜像就不详细说明。图像的垂直镜像变化也可以用矩阵变化的表示,设点P0(x0 ,y0 )进行镜像后的对应点为P(x ,y ),图像的高度为fHeight,宽度为fWidth,原图像中的P0(x0 ,y0 )经过垂直镜像后的坐标变为(x0 ,fHeight- y0);
x = x0
y = fHeight – y0
推导出相应的矩阵是:

垂直镜像-Matrix

final float f[] = {1.0F,0.0F,0.0F,0.0F,-1.0F,120.0F,0.0F,0.0F,1.0F};
Matrix matrix = new Matrix();
matrix.setValues(f);

按照上述方法运行后的结果:
垂直镜像-Android

至于水平镜像采用类似的方法,大家可以自己去试试吧。

实际上,使用下面的方式也可以实现垂直镜像:
Matrix matrix = new Matrix();
matrix.setScale (1.0,-1.0);
matrix.postTraslate(0, fHeight);

分享到:
评论

相关推荐

    智能控制及其MATLAB实现2005李国勇编著.part3.rar

    1.3.1 神经控制的基本原理&lt;br&gt; 1.3.2 神经网络在控制中的主要作用&lt;br&gt; 1.3.3 神经网络控制系统的分类&lt;br&gt; 第2章 MATLAB神经网络工具箱函数&lt;br&gt; 2.1 感知机神经网络工具箱函数&lt;br&gt; 2.2 线性神经网络工具箱函数...

    数据结构(C++)有关练习题

    &lt;br&gt;4、用邻接矩阵或邻接图实现一个有向图的存储,并实现单源最短路径算法的实现(这个类的一个成员函数),并能输出该图的关键路径。&lt;br&gt;注:1、要用面向对象的方法设计代码;&lt;br&gt;2、一个图是一个类的实例;&lt;br&gt;3、类...

    数据结构实验:矩阵转置(c++)

    std::vector&lt;std::vector&lt;int&gt;&gt; matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 转置矩阵 std::vector&lt;std::vector&lt;int&gt;&gt; transposedMatrix = transposeMatrix(matrix); // 输出结果 for (const auto& row ...

    C#数字图像处理<四>

    本节我们将深入探讨“C#数字图像处理&lt;四&gt;”的主题,重点关注图像的几何运算,包括空间变换和灰度值插值。 首先,图像的几何运算是一种图像处理技术,其主要目的是改变图像中原有像素的空间布局,而不改变它们的灰度...

    c++计算三维点云rt矩阵转欧拉角

    在三维空间中,表示旋转的一种常见方式是使用欧拉角,它由三个旋转角度组成,通常用 yaw(偏航)、...通过对这些文件进行学习和实践,你可以深入理解旋转矩阵和欧拉角之间的转换,并掌握在C++中处理3D旋转的基本技巧。

    java生成二维码共2页.pdf.zip

    &lt;artifactId&gt;core&lt;/artifactId&gt; &lt;version&gt;3.4.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.google.zxing&lt;/groupId&gt; &lt;artifactId&gt;javase&lt;/artifactId&gt; &lt;version&gt;3.4.1&lt;/version&gt; &lt;/dependency&gt; ``...

    java生成二维码 经典 demo 案例

    2. 创建二维码:接着,我们需要创建一个`BitMatrix`对象,它代表了二维码的二进制矩阵。可以使用`MultiFormatWriter`类的`encode`方法,传入要编码的数据、二维码的格式(这里是QRCode)、尺寸等参数。 3. 转换为...

    简单制作樱花雨.txt

    2. **基本标签**:了解`&lt;html&gt;`、`&lt;head&gt;`、`&lt;title&gt;`、`&lt;meta&gt;`、`&lt;style&gt;`、`&lt;body&gt;`、`&lt;canvas&gt;`等标签的基本用法及含义。 ### 二、CSS样式设置 文档中的CSS代码负责页面的样式布局,包括去除默认的内边距和...

    二维码生成工具类.rar

    &lt;artifactId&gt;core&lt;/artifactId&gt; &lt;version&gt;3.4.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.google.zxing&lt;/groupId&gt; &lt;artifactId&gt;javase&lt;/artifactId&gt; &lt;version&gt;3.4.1&lt;/version&gt; &lt;/dependency&gt; ``...

    c++矩阵课程设计报告翻转矩阵

    矩阵在计算机科学中是一种重要的数据结构,特别是在图像处理、线性代数、机器学习等领域有着广泛的应用。本次课程设计的目标是实现矩阵的三种基本操作:矩阵翻转、矩阵卷动和矩阵旋转。这些操作对于理解和掌握矩阵的...

    矩阵模板类

    矩阵在科学计算、图像处理、机器学习等领域中扮演着核心角色。本篇文章将详细探讨“矩阵模板类”的实现及其相关的编程知识点。 首先,矩阵模板类的设计目标是提供一种高效且灵活的方式来存储和操作矩阵。模板类允许...

    C语言实现矩阵的乘法、平移、旋转和矩阵求逆

    你可以通过编译和运行这些源代码来验证它们的正确性,并学习如何在实际项目中应用这些基本的矩阵操作。 总之,理解和熟练掌握矩阵的乘法、平移、旋转和求逆是计算机科学,尤其是图形学领域中的基础技能。C语言的...

    将卷积运算转换成矩阵相乘

    卷积运算在图像处理、深度学习以及信号处理等领域中扮演着至关重要的角色。它通过滑动一个小的滤波器(也称为卷积核)在输入数据上进行计算,以提取特征或进行滤波。通常,卷积运算可以被理解为一种特殊的矩阵乘法...

    C++的数组转换成矩阵

    矩阵可以被看作是二维数组的一种具体应用,广泛应用于线性代数、图像处理、机器学习等多个领域。在C++中,将一个二维数组转换为矩阵的过程不仅有助于更好地理解数据结构,还能有效提高程序的性能与可读性。 #### ...

    HILL加密解密程序C++

    4. **矩阵乘法**:实现矩阵乘法函数,如`std::vector&lt;std::vector&lt;int&gt;&gt; multiplyMatrices(std::vector&lt;std::vector&lt;int&gt;&gt;& m1, std::vector&lt;std::vector&lt;int&gt;&gt;& m2)`。 5. **加密**:对明文进行分块,然后用加密...

    机械臂正运动学程序,两种实现方式,robotics工具箱和转换矩阵

    这些资源可以作为学习机械臂正运动学的实践教程,帮助开发者更好地掌握机器人运动控制的基础知识。 总结来说,机械臂的正运动学是机器人技术的核心部分,而转换矩阵和Robotics Toolbox是实现这一功能的常见工具。...

    利用SVG或VML在网页上实现3D的曲面效果

    例如,可以使用`&lt;svg&gt;`元素结合`&lt;path&gt;`、`&lt;polygon&gt;`或`&lt;rect&gt;`等元素来构造3D形状,并通过`transform`属性应用变换。 VML,全称为Vector Markup Language,是在SVG之前的一种矢量图形技术,主要在Internet ...

    c++\C++入门必做题

    vector&lt;vector&lt;int&gt;&gt; K(n + 1, vector&lt;int&gt;(W + 1, 0)); for (int i = 1; i &lt;= n; i++) { for (int w = 1; w &lt;= W; w++) { if (wt[i - 1] &lt;= w) K[i][w] = max(val[i - 1] + K[i - 1][w - wt[i - 1]], K[i - 1...

    使用vc实现矩阵求逆的算法

    在计算机科学和编程领域,矩阵求逆是一种常见的数学运算,特别是在线性代数、图形学、机器学习等应用中有着广泛的应用。本文将详细介绍如何使用VC++(Visual C++)来实现任意阶数矩阵的求逆算法。 首先,我们要了解...

    html5全屏酷炫3D多边形背景动画特效.zip

    2. **矩阵变换**:在3D空间中,对象的位置、旋转和缩放通常通过矩阵变换来实现。这些变换包括平移、旋转、缩放和投影。 3. **光照模型**:为了让3D模型看起来更真实,需要模拟光照。这涉及到计算光源、表面和观察者...

Global site tag (gtag.js) - Google Analytics