下午好,
假设我有一个矩阵。我有2个值,.9用于缩小,1.1用于放大。
当我应用matrix.postScale(0.9, 0.9);
3次时
然后我应用matrix.postScale(1.1, 1.1);
3次
我不回到我开始的地方!
例如,以下是我记录的结果:
当前比例postScale(x,x)结果比例
1 .9 .9
.9 .9 .80999994
.80999994 .9 .7189999
.7189999 1.1 .8018999
.8018999 1.1 .8820899
.8820899 1.1 .97029895
正如你所看到的,我不会回到1.发生了什么,我是否错误地获得了当前的比例?
例如,为了获得右边的所有值,我在应用postScale后执行了此操作:
matrix.getValues(tempArrayFloat);
Number = tempArrayFloat[Matrix.MSCALE_X];
我只是假设MSCALE_X和MSCALE_Y会相同?
我的问题是,如果我使用1个特定值3次缩放矩阵,.9 - > .9 - > .9,我需要将它缩放回原来的位置?
-Kind问候,
保
答案 0 :(得分:7)
表格右侧的数字为您提供答案,缩放矩阵将点数乘以缩放值。因此matrix.postScale(0.9)
应用0.9*0.9*0.9 = 0.729
三次缩放比例matrix.postScale(1.1)
。将1.1*1.1*1.1=1.331
三次缩放应用1.0/0.729=1.372
。要回到开始的位置,您需要按{{1}}
答案 1 :(得分:2)
使用1.111111112而不是1.1来缩放它,但如果要缩放位图,则可能更容易将其调整为圆值。
基本上你可以陈述matrix.postScale(1.0/0.9, 1.0/0.9);
这应该将它四舍五入到最近的像素