zoukankan      html  css  js  c++  java
  • Canvas,Matrix的变换顺序

    Canvas的几何变换是倒序的,Matrix是正序。

    比如先平移在旋转:

    canvas.rotate();

    canvas.translate();

    //translate先执行,rotate后执行

    Matrix里面就好比维护者一个双端队列,当调用preXxx方法时,将该方法放入队列的顶端,(即每来一个preXxx方法就按照代码的书写顺序依次放入队列的顶端)

    当调用setXxx方法时,清空当前队列,(如此说来,在setXxx之前调用的preXxx,postXxx都是无效的)

    当调用postXxx方法时,将方法放入队列的末端,(即每来一个postXxx方法就按照代码的书写顺序依次放入队列的顶端)

     因此大家一般使用时的代码是:先调用setXxx,再调用 preXxx,postXxx,(这里preXxx方法与postXxx的代码书写的先后顺序无所谓,但是setXxx必须是在两个方法之前调用)

     

    camera是三维变换

    如果camera旋转需要图形左右对称,需要配合上 Canvas.translate(),在三维旋转之前把绘制内容的中心点移动到原点,即旋转的轴心,然后在三维旋转后再把投影移动回来:

  • 相关阅读:
    bzoj1818 [Cqoi2010]内部白点
    bzoj4001 [TJOI2015]概率论
    bzoj3997 [TJOI2015]组合数学
    bzoj3193 [JLOI2013]地形生成
    bzoj4869 [Shoi2017]相逢是问候
    bzoj4868 [Shoi2017]期末考试
    CF421D Bug in Code
    CCPC-WFinal-女生专场
    CF915F Imbalance Value of a Tree
    soj考试2
  • 原文地址:https://www.cnblogs.com/krislight1105/p/10026486.html
Copyright © 2011-2022 走看看