Processing:图像

1. 载入一张图片: // 申明一个PImage类型的变量, 一个我们可用的存储于p5核心库内的类. PImage img; void setup() { size(320,240); // 通过载入一个图片文件创建一个新的PImage实例 img = loadImage(“fuckyoubaby.jpg”); } void draw() { background(0); //image()函数在一个位置显示图片-本例位于点(0,0). image(img,0,0); } 这里,手贱的我又发现一点:如果你将你的这个sketch命名为PImage的话,点击运行p5会返回你错误:”cannot convert from PImage to PImage”。。。直到你重命名后才能正常运行。 2. 在上例内放入一张比size大的图片,运行,它将以原尺寸从左上角开始显示图片,你的size有多大,他就显示多大,没有缩放。 3. 要显示的图片必须位于本sketch文件夹下的data文件夹内(这也是p5载入外部文件的统一规矩)。 4. 我们需要注意,从硬盘载入图片相对来说是较慢的,因此我们应当确保我们的程序仅执行其一次,因此,应当将它放到setup()而不是draw()里。 5. 一旦图片被载入,它将被image()函数显示出来,这个函数必备三个引数:被显示的图片、x位置和y位置,另外,后边还可接两个备选参数:图像的宽和高(全图缩放)。 6. 让图片动起来:…

Processing.js测试

// Written by Casey Reas and Ben Fry. int xspacing = 8; // How far apart should each horizontal location be spaced int w; // Width of entire wave int maxwaves = 4; // total # of waves to add…

Processing:平移和旋转

1. z轴指任意一点的深度。这貌似很抽象,这么理解吧,x轴和y轴分别代表萤幕的宽和高,那么z轴就位于你萤幕的背后(负值)或之前(正值)。 2. 用二维的方式也可以做出三维的效果,比如下例展示一个由小变大的矩形,看起来就像它从远处向我们走来: float r = 8; void setup() { size(200,200); } void draw() { background(255); // 在萤幕中央显示一个矩形 stroke(0); fill(175); rectMode(CENTER); rect(width/2,height/2,r,r); // 增大矩形 r++ ; // 反复开启矩形的动态 if (r > width) { r = 0; } } 3.…

“心像 Mental Image”–上海国际电子音乐周闭幕作品心得

×Preface× 先介绍下自己。本人上海音乐学院音乐工程系毕业,无编程基础。大二的时候玩过VB,学的太快了,便没有继续学习。直至鬼使神差发现了processing以后,便下载了多本教程边学习边小做作品。 这次合作源于我的专业J老师要参加本次电子音乐周,希望有人能够做一点视觉交互方面的东西。我们系虽然有学max,不过大部分还是用msp,所以老师就找我合作。同时合作的还有J老师的弟弟,数学专业出身,编程人员。 ×一× J老师开始给我看了他想要的效果,是一个很像分子式的视频。在我听了他做的音乐开头部分之后,觉得更想做类似星星的视觉效果。于是打算先试试看。最初想法就是载入星星的图像,然后根据音量的高低运动。但是由于编程能力有限,星星的运动无法很灵活的根据声音变换。遂打算根据老师的想法做类似分子式旋转的效果。首先找到了traer的example 此eg是通过点击鼠标来生成每一个node,所以先把mouse改成根据音量的大小来生成node,我用minim这个library,设置为: for(int j= 0; j < in.left.size(); j+=100){ if(in.left.get(j)*1000>280 ){ addNode(); 意思是,大于280就生成一个Node. 另外把2d球改成3d的球,以及把连接的线也改成3d的(此处询问了豆瓣上数位编程高手,十分感谢) 球问题不大,线的话,增加一个z: vertex( a.position().x(), a.position().y(),a.position().z() ); vertex( b.position().x(), b.position().y(), b.position().z() ); 并在最后一行改: p.position().set( q.position().x() + random( -0.05, 0.05 ), (q.position().y() + random( -5,…

Processing:数学(下)

14. 我们直觉上习惯以度数来考虑角。但Processing却要求我们用弧度来制作一个角。 角度、弧度转换公式: 弧度 = 2 * PI * (角度/360) 幸运的是,若我们习惯了以角度来考虑角而又必须以弧度写代码,Processing为我们提供了radians()函数自动将角度值转化为弧度值。另外,常数PI和TWO_PI也可以现成使用(分别等于180 ° 和 360 ° )。以下代码将使形状旋转60 ° 。 float angle = radians(60); rotate(angle); 15. 复习一下,数学常数PI (或 π )是圆周与其直径的比率(围绕圆周的距离)。它的值约等于3.14159。 16. Sohcahtoa,貌似无意义而且奇怪的词,确实巨大部分计算机图形工作的基础。当你要计算一个角,决定点间距,除了圆形或弧形等等等等的时候,你会发现三角学的重要性。sohcahtoa是记忆三角学基础,正弦、余弦和正切的助记符。 ◎ soh : sine = 对边/斜边 ◎ cah : cosine…

Minim:可播放的(Playable)

[ javadoc | 在线实例 ] 很简单,就是CD唱机的功能。 播放与暂停 手册原文说了一大堆,基本都是废话(其实我早发现这哥们废话多了),播放与暂停是什么玩意,没有不懂的吧? 示范代码(在线实例) import ddf.minim.*; Minim minim; AudioPlayer groove; WaveformRenderer waveform; void setup() { size(512, 200, P3D); minim = new Minim(this); groove = minim.loadFile(“groove.mp3”, 2048); waveform = new WaveformRenderer(); // see the example Recordable…

Processing:数学(上)

1. “如果你不相信数学有多简单,是你还没有认识到生活有多复杂——John von Neumann” 2. 模数(Modulus):20 模(modulo,也就是除以,用百分号表示) 6 等于 2 或者写为 20 % 6 = 2。如果A = B % C,那么A永远不可能大于C(当然。。)。因此,模 可以用在你需要将一个计数器变量循环至0的情况。下列代码: x = x + 1; if (x >= limit){ x = 0; } 可以被替换为: x = (x + 1)…