Processing学习
“Processing 是一个开放原始码的程序语言及开发环境,提供给那些想要对影像、动画、声音进行程序编辑的工作者。此外,学生、艺术家、设计师、建筑师、研究员以及有兴趣的人,也可以用来学习,开发原型及制作。”
工作太忙,停止Processing学习太久,重新复习下笔记,再次开始。Processing中文教材不多,推荐一本入门级教材《Processing互动编程艺术》,边学边Processing.org熟悉语法和例子。
基本图形:
point(x1,y1)
line(x1,y1,x2,y2)
triangle(x1,y1,x2,y2,x3,y3)
quad(x1,y1,x2,y2,x3,y3,x4,y4)
rect(x,y,width,height,r,tl,tr,br,bl)
ellipse(x,y,width,height)
arc(x,y,width,height,start,stop),arc(x,y,width,height,radians(45),radians(225));
填充和描边:
fill() 填充颜色,noFill()禁用填充颜色
stroke()描边颜色,noStroke()禁用描边
strokeWeight() 定义画笔粗细
strokeJoin()定义线与线之间的连接模式(衔接角的形状): strokeJoin(ROUND)圆形转角,strokeJoin(BEVEL)锥形转角
rectMode(),http://processing.org/reference/rectMode_.html
ellipseMode(),
strokeCap()定义线的起始与终止的画法:strokeCap(SQUARE)方头线,strokeCap(ROUND)圆头线
颜色以及透明度:
background(r,g,b,alpha)、fill(r,g,b,alpha)、stroke(r,g,b,alpha)描边颜色
自定义图形:
beginShape() 开始自定义图形,endShape()结束图形定义,endShape(CLOSE)闭合图形
vertex()定义点坐标
基本语法:
while
while(条件式){
绘制函数;//符合条件,程序继续循环执行括号内指令并计数,不符合条件则停止
计数器;
}
if
if(条件判断){
//满足的话,则执行此区域代码
}
if(条件判断){
//满足的话,则执行此区域代码
}else{
//不满足的话,则执行此区域代码
}
if(条件判断){
//满足的话,则执行此区域代码
}else if(条件判断2){
//满足条件2的话,则执行此区域代码
}else{
//都不满足的话,则执行此区域代码
}
for-loop
for(init;test;update){
statements
}
for(初始化;条件判断;更新判断的数值){
满足条件的话,则执行此区域代码
}
响应:
1、draw()&setup()
2、鼠标响应--鼠标跟随:mouseX(保存着x轴的值) mouseY(保存着y轴的值)
dist(x1,y1,x2,y2);//可用于计算两点之间距离
3、鼠标响应--连续作画:pmouseX和pmouseY存储着前一帧鼠标的位置
line(mouseX,mouseY,pmouseX,pmouseY); //可连续划线
dist(mouseX,mouseY,pmouseX,pmouseY); //可用于计算线条宽度
4、鼠标响应事件mousePressed() mouseMoved() mouseDragged()
4、键盘响应
keyPressed()
if(keyPressed) 中可加入if(keyPressed==‘a’)
if(keyPressed&&(key==CODED)) 可加入if(keyCode==LEFT)
4、轻随(easing)
float x;
float easing=0.01;//easing值越小,延迟越大
float diameter=12;
void setup(){
size(220,120);
smooth();
}
void draw(){
float targetX=mouseX;
x+=(targetX-x)*easing;
ellipse(x,50,12,12);
println(targetX+":"+x);
}
5、映射(map)
void setup(){
size(240,120);
strokeWeight(12);
smooth();
}
void draw(){
background(204);
stroke(255);
line(120,60,mouseX,mouseY);
stroke(0);
float mx=map(mouseX,0,width,60,180);//第一个参数是一个需要转换的变量,第二和第三个分别是它的最小和最大值,第四和第五个参数是需要转换到的目的范围的最小值和最大值。
line(120,60,mx,mouseY);
}
5、点击(mousePressed) 只有2个值:真和假。鼠标按下为真。
追踪鼠标哪个键:mouseButton==LEFT、CENTER、RIGHT
void setup(){
size(240,120);
strokeWeight(30);
smooth();
}
void draw(){
background(204);
stroke(102);
line(40,0,70,240);
if(mousePressed){
if(mouseButton==LEFT){
stroke(255);
}else{
stroke(0);
}
line(0,70,width,50);
}
}