在Android中,Matrix类的mapRect api执行什么样的转换?

在Android中,Matrix类的mapRect api执行什么样的转换?,android,matrix,Android,Matrix,我想知道Android中Matrix类下的mapRect api的功能。如果我有一个样本矩阵a和矩形R,那么 RectF R=新的RectF(t1,t2,t3,t4) A.mapRect(R) R可能会发生什么样的转换。如果有人能用一些合适的例子来说明mapRect()api,那将更有帮助。下面是一个非常简单的例子: 让我们看一个矩阵: Matrix matrix = new Matrix(); 将该矩阵设置为将所有对象缩放两倍: matrix.setScale(2.0F, 2.0F); 创

我想知道Android中Matrix类下的mapRect api的功能。如果我有一个样本矩阵a和矩形R,那么

RectF R=新的RectF(t1,t2,t3,t4)

A.mapRect(R)


R可能会发生什么样的转换。如果有人能用一些合适的例子来说明mapRect()api,那将更有帮助。

下面是一个非常简单的例子:

让我们看一个矩阵:

Matrix matrix = new Matrix();
将该矩阵设置为将所有对象缩放两倍:

matrix.setScale(2.0F, 2.0F);
创建一个10x10的矩形,其原点位于左上角:

RectF rect = new RectF(0F, 0F, 10F, 10F);
所以当我们打电话的时候

matrix.mapRect(rect);
我们创建的输入矩形将替换为输出矩形,输出矩形是转换输入的结果:

rect.left = 0F;
rect.top = 0F;
rect.right = 20F;
rect.bottom = 20F;
该方法还有另一个版本

matrix.mapRect(RectF dst, RectF src);
在不影响输入矩形的情况下执行相同的变换


什么是矩阵

想想镜子吧。镜像将拍摄您的图像,并创建图像的水平翻转版本

考虑一个麦克风和一个放大器。他们接收你的声音,创造出更响亮的声音

这就是矩阵。这是一个变压器。它接受输入并根据输入创建输出。所以矩阵可以变换一个点,一个矩形,一个圆,一个多边形

有关更多信息,请参阅我的答案


也请查收。有一个很棒的图形显示了不同的仿射变换及其效果。

它映射了所有的角点,并计算了映射点周围的边界矩形。我想知道生成的矩形尺寸。在上述情况下,你能给我一个3x3矩阵示例吗?它取决于矩阵
a
,如果其旋转、缩放等原因导致更多问题。我目前在一个Android项目中工作,在执行与图像相关的操作时遇到了这个函数。确切地说,我无法理解这个转换函数所做的更改。如果矩阵A是[(a1,a2,a3),(b1,b2,b3),(c1,c2,c3)],我想知道如何从数学上得到合成的矩形尺寸。请问矩形坐标(上、左、下、右)是如何映射到矩阵上的。它们可以用矩阵表示吗?更具体地说:矩阵将输入矩形映射到输出矩形。同一矩阵还可以将输入圆映射到输出圆,或将输入多边形映射到输出多边形。请看我的最新答案。我添加了一个链接,指向我回答的另一个问题,我在这里详细介绍了矩阵运算的实际工作原理。也许这会消除一些困惑。