程序片段

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 追随鼠标移动的更多相关文章

  1. Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例

    概要 本章,我们对JUC包中的信号量Semaphore进行学习.内容包括:Semaphore简介Semaphore数据结构Semaphore源码分析(基于JDK1.7.0_40)Semaphore示例 ...

  2. Image Processing and Analysis_8_Edge Detection:Edge and line oriented contour detection State of the art ——2011

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  3. Image Processing and Analysis_8_Edge Detection:Design of steerable filters for feature detection using canny-like criteria ——2004

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  4. Linux 中 17 个 tar 命令实用示例

    Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归 ...

  5. node-webkit教程(11)Platform Service之shell

    node-webkit教程(11)Platform Service之shell 文/玄魂 目录 node-webkit教程(10)Platform Service之shell 前言 11.1  She ...

  6. Java 8 时间日期库的20个使用示例

    java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之, ...

  7. 17 个 tar 命令实用示例【转】

    Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归 ...

  8. rapidjson常见使用示例

    目录 目录 1 1. 前言 2 2. Move语意 2 3. rapidjson::Document 2 4. 成员迭代器MemberIterator 3 5. 数组迭代器ValueIterator ...

  9. iOS 11开发教程(十三)iOS11应用编辑界面添加视图

    iOS 11开发教程(十三)iOS11应用编辑界面添加视图 在iOS中添加视图的方式有两种:一种是使用编辑界面添加视图:另一种是使用代码添加视图.以下是这两个方式的详细介绍. 1.编辑界面添加视图 使 ...

随机推荐

  1. Navicat Premium 12.0.18安装与激活(转)

    转载:https://www.jianshu.com/p/42a33b0dda9c 一.Navicat Premium 12下载 Navicat Premium 12是一套数据库开发管理工具,支持连接 ...

  2. 【Python52--爬虫1】

    一.Python如何访问互联网 采用urllib包来访问 二.理论 1.请问URL是“统一资源标识符”还是“统一资源定位符” URI是统一资源标识符,URL是统一资源定位符.即:URI是用字符串表示某 ...

  3. Spring 学习——Spring JSR注解——@Resoure、@PostConstruct、@PreDestroy、@Inject、@Named

    JSR 定义:JSR是Java Specification Requests的缩写,意思是Java 规范提案.是指向JCP(Java Community Process)提出新增一个标准化技术规范的正 ...

  4. emmc和ssd的区别【转】

    本文转载自:https://blog.csdn.net/hawk_lexiang/article/details/78228789 emmc和ssd eMMC和SSD主要是满足不同需求而发展出来的NA ...

  5. Docker Tomcat远程部署到容器

    一:创建一个开启远程部署的tomcat容器 tomcat角色配置 1.tomcat开启远程部署,修改conf/tomcat-users.xml <?xml version="1.0&q ...

  6. TCGA phenotype各列的含义

    Property name Description kind The resource type. aliquots[] List of barcodes of aliquots taken from ...

  7. Spring核心简介

    Spring简介 Spring是一个开源.轻量级框架.在诞生之初,创建Spring的主要目的是用来替代更加重量级的企业级Java技术,尤其是EJB(Enterprise JavaBean).从最初的挑 ...

  8. 局域网不能访问本机IIS网站的解决方法

    背景:Win7环境下,本机能访问本机IIS网站,但局域网其它电脑访问不了. 解决方法: 一.如果IIS网站是80端口:点击右下角“电脑”图标 -> 点击“打开网络和共享中心” -> 在弹出 ...

  9. (转)Awsome Domain-Adaptation

    Awsome Domain-Adaptation 2018-08-06 19:27:54 This blog is copied from: https://github.com/zhaoxin94/ ...

  10. 什么是SpringCloud

    SpringCloud是在SpringBoot的基础上构建的,用于简化分布式系统构建的工具集. 该工具集为微服务架构中所涉及的配置管理,服务发现,智能路由,断路器,微代理和控制总线等操作 提供了一种简 ...