首頁>Club>
4
回覆列表
  • 1 # 使用者1062846289535

    幾種典型的仿射變換:

    public static AffineTransform getTranslateInstance(double tx, double ty)

    平移變換,將每一點移動到(x+tx, y+ty),變換矩陣為:

    [ 1 0 tx ]

    [ 0 1 ty ]

    [ 0 0 1 ]

    (譯註:平移變換是一種“剛體變換”,rigid-body transformation,中學學過的物理,都知道啥叫“剛體”吧,就是不會產生形變的理想物體,平移當然不會改變二維圖形的形狀。同理,下面的“旋轉變換”也是剛體變換,而“縮放”、“錯切”都是會改變圖形形狀的。)

    public static AffineTransform getScaleInstance(double sx, double sy)

    縮放變換,將每一點的橫座標放大(縮小)至sx倍,縱座標放大(縮小)至sy倍,變換矩陣為:

    [ sx 0 0 ]

    [ 0 sy 0 ]

    [ 0 0 1 ]

    當sx=sy時,稱為尺度縮放,sx不等於sy時,這就是我們平時所說的拉伸變換。

    public static AffineTransform getShearInstance(double shx, double shy)

    剪下變換,變換矩陣為:

    [ 1 shx 0 ]

    [ shy 1 0 ]

    [ 0 0 1 ]

    相當於一個橫向剪下與一個縱向剪下的複合

    [ 1 0 0 ][ 1 shx 0 ]

    [ shy 1 0 ][ 0 1 0 ]

    [ 0 0 1 ][ 0 0 1 ]

    (譯註:“剪下變換”又稱“錯切變換”,指的是類似於四邊形不穩定性那種性質,街邊小商店那種鐵拉門都見過吧?想象一下上面鐵條構成的菱形拉動的過程,那就是“錯切”的過程。)

    public static AffineTransform getRotateInstance(double theta)

  • 中秋節和大豐收的關聯?
  • 為什麼有人感覺茶葉基本上沒有外賣?