【发布时间】:2014-08-25 08:10:47
【问题描述】:
我需要使用 (x,y) 乘法在特定点上以统一的比例缩放对象,例如此处解释的乘法:
http://www.willamette.edu/~gorr/classes/GeneralGraphics/Transforms/transforms2d.htm#Combining
我目前面临的问题是,每当我尝试使用某个系数(X 和 Y 都相等)缩放对象时,该对象会被向右推某个值。我想防止这种情况发生并且我知道这个问题的解决方案是在实际缩放对象之前从 (X,Y) 中减去一个值,但我无法找到正确的值。在上面的教程中它是这样解释的
我们看到基本的缩放和旋转变换总是相对于原点。要围绕特定点(固定点)缩放或旋转,我们必须首先平移对象,使固定点位于原点。然后我们执行缩放或旋转,然后执行原始平移的逆操作,以将固定点移回其原始位置。例如,如果我们想在点 fp = (1.5,1) 的每个方向上将三角形缩放 2,我们首先将三角形的所有点平移 T = (-1.5,-1),缩放 2 ( S) ,然后通过 -T=(1.5,1) 翻译回来。这在数学上看起来像
他们是什么意思起源?这是否意味着 (0,0),如果是,那么乘以不会乘以零并且没有得到任何结果吗?这没有任何意义,这就是为什么我怀疑我必须取我从一个动作中减去的这个数字。
提前致谢。
编辑:这是为任何可能在未来搜索它的人解释的问题的答案,因为我在互联网上没有找到令人满意的解释(不包括我什至没有找到的可能的解释)我充分搜索)
所以一般来说,如果您想在 (X,Y) 点进行缩放,说它 (X = 10,Y = 15) 的比例因子为 10,您必须执行以下步骤: 1)找到对象当前所在平面的中心。对于我们的例子,这将是(10,15)点。 2)对于您应用缩放以从对象的 X 点减去中心点的 X 值的每个对象,Y 也是如此(我使用中心点是因为我希望它是统一的缩放点)。 3)将运算结果乘以比例因子(在我们的例子中为 10)。
【问题讨论】:
标签: java c# scaling graphics2d