【发布时间】:2013-12-11 05:12:51
【问题描述】:
Processing 新手正在努力理解此代码:
import com.onformative.leap.LeapMotionP5;
import java.util.*;
LeapMotionP5 leap;
LinkedList<Integer> values;
public void setup() {
size(800, 300);
frameRate(120); //Specifies the number of frames to be displayed every second
leap = new LeapMotionP5(this);
values = new LinkedList<Integer>();
stroke(255);
}
int lastY = 0;
public void draw() {
**translate(0, 180)**; //(x, y, z)
background(0);
if (values.size() >= width) {
values.removeFirst();
}
values.add((int) leap.getVelocity(leap.getHand(0)).y);
System.out.println((int) leap.getVelocity(leap.getHand(0)).y);
int counter = 0;
** for (Integer val : values)** {
**val = (int) map(val, 0, 1500, 0, height);**
line(counter, val, counter - 1, lastY);
point(counter, val);
lastY = val;
counter++;
}
** line(0, map(1300, 0, 1500, 0, height), width, map(1300, 0, 1500, 0, height)); //(x1, y1, x2, y2)**
}
它基本上绘制了使用 Leap Motion 传感器在 y 轴上检测到的运动图。输出如下所示:
我最终需要做一些类似的事情来同时检测所有 3 轴上的振幅而不是速度,而不仅仅是 y。
地图和翻译的使用让我很困惑。我已经在 Processing 网站上阅读了这些函数的定义,所以我知道它们是什么以及语法,但我不明白为什么?! (这可以说是最重要的部分。
我在问是否有人可以提供简单的示例来解释使用这两个函数背后的原因。例如,给定一个程序需要使用数据 foo、y 和 x 执行 A、B 和 C,您将使用 Map 或 Translate,因为 A、B 和 C。
我认为编程指南经常忽略这一重要事实,但对我来说,真正理解一个函数非常重要。
解释加分:
for (Integer val : values) and LinkedList<Integer> values;(在这些处理网站上找不到任何文档)
谢谢!
【问题讨论】:
标签: map linked-list processing leap-motion