计算用于将一个矩形的point1(x,y坐标)转换为另一个矩形的Point1(x,y)的缩放系数

时间:2013-12-12 06:47:17

标签: c#-4.0 geometry transformation scaling scaletransform

将一个矩形的x,y坐标缩放到其他矩形坐标的过程非常简单,在此链接中有更好的解释

http://www.icoachmath.com/math_dictionary/scale_factor.html

如果我们有两个矩形,则Maxwidth:2000和Maxheight:1000

和第二个矩形,大小MaxWidth:4000和MaxHeight = 2000

因此将rect1坐标转换为rect2的比例因子为

对于rect2中的x,

:(在rect1中为x)*(Rect1的MaxWidth / Rect1的MaxWidht) 对于rect2中的y :(在rect1中为y)*(Rect2的MaxHeight / Rect1的MaxHeight)

时应该是什么比例因子

对于一个矩形中心,原点(X,Y - 0,0)将位于中心,如果从中心向左移动则x和y将为负值,然后x将为负数,在右侧对于Y来说,它会是正面的,如果你上升那么y会是正数,但如果你去底部,那么Y将是负数,所以这个矩形的范围倾向于( -MaxWidth to + MaxWidth,-MaxHeight to + MaxHeight)

现在我们有第二个矩形,其中心位于最左侧和最顶部位置 (最左边和最顶部-0,0)因为我们必须沿x轴向右行进,沿y轴向下行进,所以x和y总是有正值。

那么,如何计算将原点位于矩形中心(MaxWidth / 2,MaxHeight / 2)的矩形坐标转换为最左边和最顶部位置的矩形的比例因子

1 个答案:

答案 0 :(得分:4)

让第一个矩形的坐标为两个(对角线对角): (X0_Old, Y0_Old) and (X1_Old, Y1_Old) 和第二个 - (X0_New, Y0_New) and (X1_New, Y1_New)

然后坐标转换看起来像

for every point:
  X_New = X0_New + (X_Old - X0_Old) * X_Coeff
where 
  X_Coeff = (X1_New - X0_New) / (X1_Old - X0_Old)

(和Y坐标相同)