【问题标题】:Calculate scaling factor for converting point1( x,y coordinates) of one rectangle to Point1( x,y) of a different rectangle计算将一个矩形的point1(x,y坐标)转换为不同矩形的Point1(x,y)的比例因子
【发布时间】:2013-12-12 06:47:16
【问题描述】:

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

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

如果我们有两个矩形,其中一个的 Maxwidth: 2000 和 Maxheight: 1000

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

所以将 rect1 坐标转换为 rect2 的比例因子将是

for x in rect2 : (x in rect1) * (MaxWidth of Rect2/ MaxWidht of Rect1) 对于 rect2 中的 y : (y in rect1) * (MaxHeight of Rect2/ MaxHeight of Rect1)

但是什么时候应该是比例因子

对于一个矩形中心来说,origin(X,Y - 0,0) 会在中心,如果你从中心向左走,x 和 y 也会有负值,那么 x 会是负数,右一边它对Y来说是正的,如果你往上走,那么y是正的,但是如果你走到底部,那么Y是负的,所以这个矩形的范围倾向于( -MaxWidth 到 +MaxWidth,-MaxHeight 到 +MaxHeight)

现在我们有了第二个矩形,它的中心在最左边和最上面的位置 (最左侧和最顶部-0,0)并且由于我们必须沿 x 轴向右移动并沿 y 轴向下移动,因此 x 和 y 始终为正值。

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

【问题讨论】:

    标签: c#-4.0 geometry transformation scaling scaletransform


    【解决方案1】:

    让我们的第一个矩形有两个(对角相对)角的坐标:

    (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 坐标也是如此)

    【讨论】:

    • 感谢您对这个非常有用的转换!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2010-11-09
    相关资源
    最近更新 更多