Getting started with Processing 示例11-9 追随鼠标移动
程序片段
int num = 60;
int[] x = new int[num];
int[] y = new int[num]; void setup(){
size(240,120);
noStroke();
} void draw(){
background(0);
//from back to from copy the array
for(int i = x.length-1;i>0;i--){
x[i] = x[i-1];
y[i] = y[i-1];
}
x[0] = mouseX;//set the first element
y[0] = mouseY;//set the first element
for(int i = 0;i<x.length;i++){
fill(i*4);
ellipse(x[i],y[i],40,40);
}
}
程序进程
首先程序中并没有对数组进行初始化,所以一开始的循环中,即 for(int i=x.length-1;i>0;i--)每一个数组中的元素都是随机数。
然后对x[0]进行赋值,即将现在的坐标值 mouseX 和 mouseY 赋值给 x[0],
然后执行下一个for 循环语句,这个时候,存储的数据的显示值并没有实际的意义。
当程序进行下一次 draw() 的时候,这个时候,首先 x[0] 有了新的值,然后 x[1] 也有了确定的数值。
如此循环下去,六十次的程序进行下去之后,x[60]中每一个元素都有了数值。
然后继续进行程序的时候,新的 x[0] 不断被赋值,并且 最后一个 数组元素被前一个元素赋值,这里因为数组的长度是一定的,所以就相当于最后一个元素被丢弃,然后进入一个新的元素,即当前的 mouseX 值和 mouseY 值,然后程序不断进行下去。
从 fill(i*4);这一条语句可以看出,当前鼠标所画出的圆的颜色比较暗淡,但是在起初画的圆的颜色比较明亮。
总结:
首先,先填充整个数组,方式是在执行循环之后不断的对 x[0] 的赋值,那么想一下,能不能先进行赋值然后再进行对数组进行循环呢,我认为是可以的。
当填满这个数组之后,然后不断利用数组长度的有限性,不断进行丢弃旧的数组元素,进入新的数组元素,通过另外一个 for()循环在屏幕上显示出来其路径。
Getting started with Processing 示例11-9 追随鼠标移动的更多相关文章
- Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
概要 本章,我们对JUC包中的信号量Semaphore进行学习.内容包括:Semaphore简介Semaphore数据结构Semaphore源码分析(基于JDK1.7.0_40)Semaphore示例 ...
- Image Processing and Analysis_8_Edge Detection:Edge and line oriented contour detection State of the art ——2011
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- Image Processing and Analysis_8_Edge Detection:Design of steerable filters for feature detection using canny-like criteria ——2004
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- Linux 中 17 个 tar 命令实用示例
Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归 ...
- node-webkit教程(11)Platform Service之shell
node-webkit教程(11)Platform Service之shell 文/玄魂 目录 node-webkit教程(10)Platform Service之shell 前言 11.1 She ...
- Java 8 时间日期库的20个使用示例
java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之, ...
- 17 个 tar 命令实用示例【转】
Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归 ...
- rapidjson常见使用示例
目录 目录 1 1. 前言 2 2. Move语意 2 3. rapidjson::Document 2 4. 成员迭代器MemberIterator 3 5. 数组迭代器ValueIterator ...
- iOS 11开发教程(十三)iOS11应用编辑界面添加视图
iOS 11开发教程(十三)iOS11应用编辑界面添加视图 在iOS中添加视图的方式有两种:一种是使用编辑界面添加视图:另一种是使用代码添加视图.以下是这两个方式的详细介绍. 1.编辑界面添加视图 使 ...
随机推荐
- 20145326蔡馨熤《网络对抗》——MSF基础应用
20145326蔡馨熤<网络对抗>——MSF基础应用 实验后回答问题 用自己的话解释什么是exploit,payload,encode. exploit:起运输的作用,将数据传输到对方主机 ...
- shell if 语句
一.过程式 编程语言的代码执行顺序: a.顺序执行:逐条执行: b.选择执行: 代码有一个分支:条件满足时才会执行: 俩个或以上的分支:只会执行其中一个满足条件的分支: c.循环执行: 代码片段(循环 ...
- python---01.各类计算机语言,python历史,变量,常量,数据类型,if条件
一.认识计算机 1.硬件组成: CPU(大脑) + 内存(缓冲) + 主板(连接各部分) + 电源(心脏) + 显示器 + 键盘 +鼠标+ 显卡 + 硬盘 2.操作系统 ①windows ...
- Linux 系统/etc/profile 内配置 系统脚本命令
背景 在Linux系统下,我们需要利用脚本命令启动一个进程的时候,需要先找到找到启动文件,然后再启动.比如服务器上安装了一个was应用服务器,我们需要每次启动服务器都需要使用如下命令: sh was ...
- Bootstrap3基础 form-horizontal 表单元素横向布局 简单示例
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
- Python3基础 list in/not in 判断一个变量是否在列表中存在
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Oracle面试相关
存储过程: https://www.cnblogs.com/taiguyiba/p/7809310.html https://www.cnblogs.com/lideng/p/3427822.html ...
- (转)PaperWeekly 第二十二期---Image Caption任务综述
本文转自:http://mp.weixin.qq.com/s?__biz=MzIwMTc4ODE0Mw==&mid=2247484014&idx=1&sn=4a053986f5 ...
- Unity3D代码动态修改材质球的颜色
代码动态修改材质球的颜色: gameObject.GetComponent<Renderer>().material.color=Color.red;//当材质球的Shader为标准时,可 ...
- Netty 核心组件笔记
Netty是一款高效的NIO框架和工具,基于JAVA NIO提供的API实现. 在JAVA NIO方面Selector给Reactor模式提供了基础,Netty结合Selector和Reactor模式 ...