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矩阵,有机会再写吧。

  • 相关阅读:
    Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
    用Recycle()方法对Java对象的重要性
    Lotus中千奇百怪的 $$
    Developing a simple application using steps "User Decision" and "Mail"(1) 沧海
    沟通中的情绪管理(演讲稿) 沧海
    人只有在压力之下,才可能成功,没做一件事,都必须成功,不许言败 沧海
    什么是IDOC,以及IDOC的步骤 沧海
    VS2008 Professional Edition CHS中的deffactory.dat读取错误 沧海
    Including custom text in the step "User Decision" 沧海
    SAP Upgrade Strategy 沧海
  • 原文地址:https://www.cnblogs.com/waw/p/2162639.html
Copyright © 2011-2022 走看看