zoukankan      html  css  js  c++  java
  • 一起谈.NET技术,Silverlight中二维变换详解 狼人:

      Silverlight 为常见变换变换包括旋转 (RotateTransform)、缩放 (ScaleTransform)、扭曲 (SkewTransform) 和平移 (TranslateTransform)。

          还有一个MatrixTransform 类可以创建 RotateTransform、ScaleTransform、SkewTransform 和 TranslateTransform 类未提供的自定义变换。

      下面所有示例蓝色为原始位置,红色为变换后位置,紫色为重叠位置!

      一、二维变换矩阵简介

    image

      这个就是二维图形几何变换矩阵。

      其中image 是对图形进行缩放、旋转、对称、错切等变换。(注:对称、错切是计算机图形学的说法,微软翻译成了扭曲,平面变换中是不会变换出扭曲的图像的。);image 是对图像进行平移变换;image 是对图形做投影变换,Silverlight中不支持;image 是对整体图形做伸缩变换,Silverlight中也不支持;

      原图不做任何变换的矩阵为:image 在后面会经常用到这个矩阵。

      二、平移变换

      仅仅修改OffsetX和OffsetY即可达到目的下面分别显示了几组矩阵对应的变换。

    image image

    image image

      可以看出OffsetX和OffsetY的方向和直角坐标系的方向相同。

      三、比例变换(缩放)

      修改M11和M22是分别对X轴和Y轴进行缩放。M11=M22时为等比例变换,M11!=M22时为非均匀比例变换。

    image

    image

    image

      可以看出M11是对Y轴起作用,M22是对X轴起作用。

      四、对称变换

      对称变换一共5种,分别为Y轴对称,X轴对称,中心对称,Y=X对称,Y=-X对称,具体见下图

    image image image image

    image  五、旋转变换

      下面是旋转30°的变化矩阵。其他角度也都是这个计算式。

    image

      六、切错变换

      M12,M21是用来控制切错变换的。

      M12=0,M21!=0时,Y轴坐标不变,X坐标随初值及变换系数M21做线性变化,M21>0沿+X方向切错,M21<0沿-X方向切错。

    image image

      M21=0,M12!=0时,X轴坐标不变,Y坐标随初值及变换系数M12做线性变化,M12>0沿+Y方向切错,M12<0沿-Y方向切错。

    image image

      M12!=0且M21!=0时,图形沿XY两个方向切错。

    image

      七、复合变换

      复合变换其实也就是矩阵相乘。下面给出两个完整的计算公式:

      变换前后xy坐标计算式:

    image

      33矩阵相乘公式:

    image

      谢谢观赏,二维变换的矩阵内容就这么多了,三维矩阵变换时44矩阵,有机会再写吧。

  • 相关阅读:
    说说委托是个什么东西,以及委托有什么用
    Fedora/Centos使用dnf/yum为Firefox安装Flash,两行命令超简单
    Debian中的NVIDIA显卡驱动安装——超简单,一行命令
    对象、字段、属性、方法、成员、接口各自含义
    C#中的字段与属性的区别及属性的作用
    C#的foreach遍历循环和隐式类型变量
    依赖注入的通俗讲解,设计低耦合的系统
    群晖moments提示错误代码117的解决方案
    群晖数据库错误解决
    解决终端录制工具asciinema 的错误
  • 原文地址:https://www.cnblogs.com/waw/p/2162639.html
Copyright © 2011-2022 走看看