• Getting started with Processing 第六章总结


    平移,旋转和缩放

    前言

    在这一章节中,平移、旋转和缩放都是以原点为基准的。并且是通过控制坐标系原点的位置来达到图元平移,旋转、缩放的视觉效果。
    作者在文中的原话是:
    另一种在屏幕上改变位置和移动物体的技术是改变屏幕的坐标系。举例来说,你可以将一个图形向右移动50像素,你也可以将坐标 (0,0) 向右移动50像素,它们在视觉效果上是相同的。
    所以说在 Processing 中的坐标是相对坐标系下的坐标,而不是绝对坐标系下的坐标。

    函数

    平移位置:translate(x,y);

    旋转:rotate(angle);

    缩放 scale();

    压栈和弹出:pushMatrix() ,popMatrix()

    当 pushMatrix() 函数运行的时候,它保存当前坐标系的备份,然后当调用popMatrix()的时候还原。

    举例

    更好地理解相对坐标系的概念,分析一下移动,然后再旋转和旋转然后再移动两种不同的效果。

    移动,然后再旋转

    程序如下:
    void draw()
    translate(mouseX,mouseY);
    rotate(angle);
    rect(-15,-15,30,30);
    angle+=0.1
    }
    首先运行了 translate() 函数,将目前的坐标定位在了 (mouseX,mouseY) 「绝对坐标」处,然后再进行绕着(mouseX,mouseY)「绝对坐标」这一点,旋转 angle 的角度。

    旋转,然后再移动

    程序如下:
    void draw(){
    rotate(angle);
    translate(mouseX,mouseY);
    rect(-15,-15,30,30);
    angle +=0.1;
    }
    首先,先绕着原点旋转 rotate 所表示的角度,然后再将其位置改变为 (mouseX,mouseY),在这个过程中,不断进行下去。在这个程序中,图元一直是绕原点旋转的。





  • 相关阅读:
    洛谷模板汇总
    BZOJ1787【AHOI2008】Meet紧急集合 <LCA>
    HDU3068 最长回文 <Manacher>
    UVa12345 Dynamic len(set(a[L:R])) <带修莫队>
    BZOJ2038 小Z的袜子 <莫队>
    BZOJ1103【POI2007】大都市meg <树上差分+树状数组>
    BZOJ3226【SDOI2008】校门外的区间
    BZOJ1012【JSOI2008】最大数 <线段树>
    20170918~24周总结
    BZOJ1934【SHOI2007】善意的投票 <网络流>
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10092362.html
Copyright © 2020-2023  润新知