平移,旋转和缩放

前言

在这一章节中,平移、旋转和缩放都是以原点为基准的。并且是通过控制坐标系原点的位置来达到图元平移,旋转、缩放的视觉效果。
作者在文中的原话是:
另一种在屏幕上改变位置和移动物体的技术是改变屏幕的坐标系。举例来说,你可以将一个图形向右移动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),在这个过程中,不断进行下去。在这个程序中,图元一直是绕原点旋转的。

Getting started with Processing 第六章总结的更多相关文章

  1. ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL

    ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. RGBD深度摄像头 ...

  2. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://git ...

  3. 精通Web Analytics 2.0 (8) 第六章:使用定性数据解答”为什么“的谜团

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第六章:使用定性数据解答"为什么"的谜团 当我走进一家超市,我不希望员工会认出我或重新为我布置商店. 然而, ...

  4. 《Entity Framework 6 Recipes》中文翻译系列 (30) ------ 第六章 继承与建模高级应用之多对多关联

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第六章  继承与建模高级应用 现在,你应该对实体框架中基本的建模有了一定的了解,本章 ...

  5. 《Entity Framework 6 Recipes》中文翻译系列 (37) ------ 第六章 继承与建模高级应用之独立关联与外键关联

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-13  在基类中应用条件 问题 你想从一个已存在的模型中的实体派生一个新的实体, ...

  6. KnockoutJS 3.X API 第六章 组件(5) 高级应用组件加载器

    无论何时使用组件绑定或自定义元素注入组件,Knockout都将使用一个或多个组件装载器获取该组件的模板和视图模型. 组件加载器的任务是异步提供任何给定组件名称的模板/视图模型对. 本节目录 默认组件加 ...

  7. Java语言程序设计(基础篇) 第六章 方法

    第六章 方法 6.2 定义方法 1.方法的定义由方法名称.参数.返回值类型以及方法体组成. 2.定义在方法头中的变量称为形式参数(formal parameter)或者简称为形参(parameter) ...

  8. 读《编写可维护的JavaScript》第六章总结

    第六章 避免使用全局变量 JavaScript执行环境在很多方面都有其独特之处,全局变量就是其中之一.“全局变量”是一个神秘的对象,它表示了脚本的最外层上下文. 在浏览器中,windows对象往往重载 ...

  9. 第六章第一个linux个程序:统计单词个数

    第六章第一个linux个程序:统计单词个数 从本章就开始激动人心的时刻——实战,去慢慢揭开linux神秘的面纱.本章的实例是统计一片文章或者一段文字中的单词个数.  第 1 步:建立 Linu x 驱 ...

随机推荐

  1. ScheduledTheadPool线程池的使用

    ScheduledTheadPool线程池的特点在于可以延迟执行任务,也可以周期性执行任务. 创建线程池 ScheduledExecutorService scheduled = Executors. ...

  2. Provinces of China

    https://en.wikipedia.org/wiki/Provinces_of_China#Province

  3. Delphi xe5 编译报environment.proj错误的解决

    Delphi xe5 在Win64位下编译报 environment.proj 错误,网上有说明: http://hi.baidu.com/fly_king1228/item/9c85fccd8db4 ...

  4. 马虎的算式|2013年蓝桥杯B组题解析第二题-fishers

    小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了. 有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答案竟然是对的!! 假设 ...

  5. P3244 [HNOI2015]落忆枫音

    思路 给出了一个DAG,要求以1为根的外向树的个数 如果没有加边的条件,就非常好做 每个点都只保留一条入边,最后得到的一定就是一个符合条件的树了(因为给了一个DAG啊) 所以答案是\(\prod_{i ...

  6. IAR中的 identifier "FILE" is undefined 问题

     最近由于希望使用IAR的printf()函数方便进行打印字符,出现IAR报错,即:identifier "FILE" is undefined,问题得以解决.   (1)进行pr ...

  7. printf和cout的区别详述

    https://blog.csdn.net/ysayk/article/details/50959909

  8. HDU 5441 Travel(并查集+统计节点个数)

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给出一个图,每条边有一个距离,现在有多个询问,每个询问有一个距离值d,对于每一个询问,计算出有多少点 ...

  9. H5手机移动端调起浏览器(qq浏览器,uc浏览器)自带分享功能实例

    H5手机移动端调起浏览器(qq浏览器,uc浏览器)自带分享功能实例 (转载:https://blog.csdn.net/weixin_38787928/article/details/86741227 ...

  10. 初步:jenkins自动构建安卓Apk

    1:本地搭建jenkins 2:下载插件 3:配置相关信息(git,sdk等等) 3:拉取git仓库代码 4:编译执行 参考文章:http://www.cnblogs.com/reblue520/p/ ...