什么时候会使用AffineTransform的getScaleX()方法?

3

AffineTransform.getScaleX()及其相关方法是否有合法的使用情况?

它返回转换矩阵的左上角元素m00,对于确定矩阵缩放来说这是相当无用的。例如,考虑一个微不足道的90度旋转矩阵,getScaleX()getScaleY()都返回0。

我从不使用此调用,因为它会让代码读者感到困惑,他们可能不熟悉它不能以有意义的方式返回缩放值,更好的方法是使用getMatrix(m),然后访问m[0],因为大多数可能读取使用变换的代码的人都熟悉矩阵数学。

肯定有使用情况,但我就是不明白。

1个回答

1

正如您所写,x缩放因子的概念在一般情况下是毫无意义的。它只与缩放矩阵的特殊情况相关。例如,那些getType返回TYPE_GENERAL_SCALETYPE_UNIFORM_SCALE的矩阵。(也可以添加翻译) 在其他情况下,getScaleX在执行文档中所述的操作方面是“正确”的,但其名称无用且具有误导性。类似的推理适用于getShearX,它只在剪切矩阵的上下文中有意义。getTranslateX有点不同,因为人们可以认为这是原点被转换到的位置,而不考虑矩阵所暗示的所有其他变换。


基本上那就是我在寻找的答案,但我会等一段时间再接受它,以防有人知道/想出更好的东西。 - nyholku

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接