Processing快速使用
-----processing的代码编写流程主要包括2部分,setup()和draw(),等同于Start()和Update()。setup用于设置程序的属性,如画布的大小、背景色、要导入的图片、字体等。draw用于循环执行绘图指令,如点、线、圆、图片等等。代码区分大小写,所有语句以分号";"结尾。
-----变量类型:
-----系统变量:
mouseX,mouseY和pmouseX,pmouseY分别表示鼠标当前位置和上一帧的位置。
其它的算术运算符,关系操作符,逻辑操作符,条件判断都跟C#中一致。
坐标原点在窗口左上角,左上角坐标为(0,0),朝右为x轴正方向,朝下为y轴正方向。
-----图形
point(x,y) --画点,参数为点的坐标
line(x1,y1,x2,y2) --画线,参数为2个点的坐标
rect(x,y,w,h) --画矩形,参数为坐标以及宽高
ellipse(x,y,w,h) --画椭圆,参数为坐标以及x和y直径
arc(x,y,w,h,r1,r2) --画圆弧形,参数为坐标以及x和y直径,最后两个参数为开始和结束角度,角度有两种表示方法:PI和radians(angle),其中PI为圆周率,PI等于radians(180)。不填充则画圆弧线,填充则画扇形。
triangle(x1,y1,x2,y2,x3,y3) --画三角形,参数为3个点的坐标
quad(x1,y1,x2,y2,x3,y3,x4,y4) --画四边形,参数为4个点的坐标
bezier(x1,y1,cx1,cy1,cx2,cy2,x2,y2) --画贝塞尔曲线,参数x1,y1,x2,y2为起点和终点坐标,cx1,cy1,cx2,cy2为两个控制点坐标。
绘制直线边框自由图形:beginShape()、vertex()、endShape(),beginShape()是绘制图形开始,vertex(x,y)是连接图形的点,endShape(CLOSE)指绘制图形结束,CLOSE参数表示闭合。
绘制曲线边框自由图形:beginShape()、vertex()、bezierVertex()、endShape(),vertex(x,y)是图形起始点,bezierVertex(cx1,cy1,cx2,cy2,x,y),前面4个参数是控制点坐标,x,y表示曲线另一个点坐标。
----色彩
颜色的形式包括:灰阶、灰阶含透明度、彩色、彩色含透明度。
color(灰阶)、color(灰阶,透明度)、color(R,G,B)、color(R,G,B,透明度),使用颜色的函数同理可使用4种色彩,如background、fill、stroke
----绘画属性
size(宽,高) --设置画布的大小
background(color) --设置画布颜色
fill(color) --画图形时填充颜色
noFill() --画图形时不填充颜色
stroke() --指定线条颜色
noStroke() --不画线条
strokeWeight(num) --指定线条宽度为几个像素
strokeCap(mode) --指定线条端点模式,SQUARE-方形、PROJECT-方形延申、ROUND-圆形
strokeJoin(mode) --指定线条折角模式,MITER-尖角、BEVEL-斜角、ROUND-圆角
smooth() --开启平滑模式,消耗性能,抗锯齿
noSmooth() --关闭平滑模式,绘制快,有锯齿
----绘制顺序:代码越在后面绘制的图形越显示在前面
----重要函数
dist(x1,y1,x2,y2) --求两点之间的距离
random(num) --产生0-num范围内的浮点数
int(random(num)) --产生0-num-1范围内的整数
constrain(value,min.max) --将value的值限制在min和max之间,例如鼠标位置
----鼠标响应事件
void mousePressed()、void mouseMoved()、void mouseDragged(),分别表示按下、移动、拖拽。其中mousePressed()函数等同于系统变量 if(mousePressed)。系统变量mouseButton包含3个值:LEFT、RIGHT、CENTER,分别代表左键、右键和中键。
----键盘响应
主要包括keyPressed按击键响应、key特定按键响应、keyCode功能键响应。
keyPressed表示按下键盘上任意一个键所产生的响应。void keyPressed()等同于if(keyPressed)
key表示只针对某个键的响应事件。例如在if(keyPressed)中加入if(key == 'a')表示A键按下。
功能键响应包括ALT、CONTROL、SHIFT、方向键(UP、DOWN、LEFT、RIGHT)。例如在if(keyPressed)中加入if(key == LEFT)表示方向左键按下。
---曲线轨迹运动
->绕画布中心的做圆周运动
float r = 50;
float a = 0;
void setup()
{
size(300,300);
background(0);
smooth();
strokeWeight(5);
stroke(255,0,0,100);
fill(100);
}
void draw()
{
float x = r * cos(a);
float y = r * sin(a);
ellipse(width/2 + x,height/2 + y, 100, 100);
a += 0.1;
}
----坐标转移、旋转与缩放
translate(x,y,z)函数用于转换坐标原点,其中的x,y,z值决定了坐标原点的位置。一般translate(x,y)
rotate(角度)按照设定的角度旋转相应的图形。参数是弧度,范围0-TWO_PI,可以使用radians()将角度转换成弧度(如radians(45))。函数是顺时针转动图形,且永远围绕原点旋转。如果要让图形不围绕左上角原点旋转,需要使用translate()将原点进行转移。
scale(num)表示缩放图形,如参数0.5表示缩放到原来的一半,参数2表示放大一倍。
pushMatrix()与popMatrix()
pushMatrix()是把当前的旋转数据和坐标数据放入矩阵堆栈中。
popMatrix()则是重新回到程序最开始的坐标系统。
pushMatrix()和popMatrix()一起使用,把当前旋转函数和坐标转移函数放在中间,就可以单独控制不同图形的旋转与坐标,图形之间的旋转或坐标转移不会相互影响。
----时间控制
millis() --从程序开始运行到当前的时间(毫秒)
second() --从程序开始运行到当前的时间(秒)
minute() --从程序开始运行到当前的时间(分)
hour() --从程序开始运行到当前的时间(分)
----面向对象编程
可以创建新的文件,里面定义类,文件放在同个工程下就可以直接引用,具体操作时,点击编辑器的脚本文件右边的下拉箭头符号,选择"新建标签"创建新的文件就行,默认就是在同个目录下。
定义类包含4部分:
1.定义类名,class 名称{}
2.定义类的变量。
3.构造函数。可以是无参或有参,实例化类对象时用new。
4.定义方法。方法不用加public修饰,外部也能直接调用函数。
----图片与文字
支持的图片格式有gif、jpg、png和tga。调用图片的基本步骤有4个,准备好图片、定义图片变量、载入图片至变量、显示图片。
图片文件必须存储位于项目文件夹里的data文件夹中。在"Sketch"菜单(速写本)中选择"AddFile"命令,在浏览窗口选择一张图片,那项目文件夹下会多了一个data文件夹,刚才选择的图片储存在其中。
其次,定义图片变量。语法:PImage 变量名称。
接着,载入图片至变量。loadImage()将图片载入到图片变量中。
最后,用函数image()显示图片。Image()有两种形式:image(图片变量,坐标x,坐标y)和image(图片变量,坐标x,坐标y,宽度,高度)。
tint()用于设置图片的色彩填充值。tint()有集中设置形式:tint(明度),明度值0-255。tint(明度,透明度)。tint(R,G,B)。tint(R,G,B,透明度)。
PImage的width和height分别表示图片的宽高,“x+y*width”是指某个像素在图片中所处的位置。再运用loadPixels()获取图片像素数据,并传递给pixels[],pixels[x+y*width]代表某个像素。
PImage image1;
void setup()
{
size(600,300);
background(0);
image1 = loadImage("1.png");
}
void draw()
{
tint(255);
image(image1,0,0);
}
----字体
可以调用字体来显示文字,步骤如下:
1、在“工具”菜单中选择"创建字体",选择一种字体,然后点OK,之后会创建vlw格式的字体被放入data文件夹中。vlw是processing特有的字体格式。
2、声明PFont类型的变量。
3、使用loadFont()载入字体至变量。
4、textFont()用于为文本指定字体。
5、最后使用text()显示文本。
createFont()允许直接使用电脑中的字体,还允许字体缩放到任意大小而不影响显示质量。
PFont f = createFont("Arial",36,true);//字体名,字体大小,是否开启平滑
----视频
对视频的处理分为两种:一种是处理视频文件,另一种是处理摄像头输入的实时视频。
播放视频文件
1、添加视频至data目录,与图片处理方法相同。
2、编写代码是要首先导入视频库。在"速写本"菜单中选择"引用库文件",然后选择"Video Library for processing 3",就会生成一行代码"import processing.video.*;"。
3、使用Movie定义视频变量。
4、加载视频至变量。Movie movie = new Movie(this,"bg.mp4");
5、使用image()函数显示视频。
import processing.video.*;
Movie movie;
void setup()
{
size(320,240);
background(0);
movie = new Movie(this,"bg2.mov");
movie.loop();
}
void movieEvent(Movie m) {
m.read();
}
void draw()
{
image(movie,0,0,width,height);
}
重要函数有:play()播放、pause()暂停、loop()循环、jump()跳转到特定时间点、duration()视频长度、speed()设置播放速度。
----Minim音频
播放音频步骤:
1、通过"速写本"菜单中的"添加文件"将音频文件加入到data目录下。
2、导入音频库。通过"速写本"菜单中"引用库文件",选择Minim库,脚本中会自动生成导入库代码
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;
import ddf.minim.signals.*;
import ddf.minim.spi.*;
import ddf.minim.ugens.*;
AudioPlayer player;
Minim minim;
void setup()
{
size(300,300);
minim = new Minim(this);
player = minim.loadFile("bg.mp3");
//player.play();
player.loop();
}
void draw()
{
}
重要函数有:play()播放、pause()暂停、loop()循环播放、skip()快进或快退多少毫秒。
注意:必须要有draw()函数才能播放出音频,不知道什么原因。
Processing快速使用相关推荐
- subtotal函数_用SUBTOTAL更改Excel函数
subtotal函数 We looked at the Excel SUBTOTAL function on Friday, and saw how it works with hidden rows ...
- subtotal函数_星期五的Excel函数:将总计为SUBTOTAL的筛选列表
subtotal函数 The Excel SUM function does a great job of adding numbers on a worksheet, and it's probab ...
- processing文本可视化_推荐7个数据可视化工具,让你的信息快速生成可视化
现在我们对可视化信息的需求越来越高,可视化信息比传统的文本信息更吸引眼球,方便阅读,加深记忆,因此也可以更快地被人们传播出去.近年来涌现出了许多数据可视化工具.有哪些值得使用呢?下面与大家分享九大数据 ...
- 【MATLAB Image Processing Toolbox 入门教程三】快速入门之“在多光谱图像中寻找植被”
[MATLAB Image Processing Toolbox 入门教程三] 本篇摘要 一.从多光谱图像文件导入彩色红外通道 二.构建近红外光谱散射图 三.计算植被系数并显示其定位 四.综合实例部分 ...
- Post Processing的快速使用
注意:如果您使用一个包含后期处理(Post-processing)的模板创建项目,那么您不需要完成这些步骤中的大部分,尽管我们建议您阅读它们,以理解所有的工作原理. Post-process Laye ...
- DPU(Data Processing Unit)数据处理器
DPU(Data Processing Unit)数据处理器 DPU:5G边缘云 5G时代带来通信带宽的巨大提升,更多的带宽使能更多的应用.数据量的迅猛增多,服务器网络带宽的快速增长,都已经远超计算能 ...
- 基于TensorRT 3的自动驾驶快速INT8推理
基于TensorRT 3的自动驾驶快速INT8推理 Fast INT8 Inference for Autonomous Vehicles with TensorRT 3 自主驾驶需要安全性,需要一种 ...
- 快速部署RDA Remote Diagnostic Agent
RDA Remote Diagnostic Agent远程诊断代理是Oracle Support售后服务使用的标准工具之一,当用户在Metalink上提交SR(TAR)时可能Oracle GCS(Gl ...
- 关于 MongoDB 与 SQL Server 通过本身自带工具实现数据快速迁移 及 注意事项 的探究...
背景介绍 随着业务的发展.需求的变化,促使我们追求使用不同类型的数据库,充分发挥其各自特性.如果决定采用新类型的数据库,就需要将既有的数据迁移到新的数据库中.在这类需求中,将SQL Server中的数 ...
最新文章
- 2021年大数据ELK(十六):Elasticsearch SQL(职位查询案例)
- 为什么要用OKR?OKR在什么情况下用?
- SmartArt使用
- pandas Series DataFrame 丢弃指定轴上的项(三)
- 每天一道LeetCode-----找出给定序列的所有子序列
- 支付宝生活号异步通知地址_异步生活。
- 将JavaScript和VBScript添加到您的.NET Apps
- 重定向无法设置页面编码?
- 面试题10.3-变态跳台阶
- python 中 * 的使用和表示含义
- PostgreSQL逻辑优化——查询优化分析
- 易语言升级版火山软件开发平台现在很庞大了
- boostrap中lg,md,sm,xs
- 战舰世界显示无法连接服务器失败,王美雪:战舰世界无法连接服务器解决方法 无法登陆怎么办...
- Docker基础25--5.6 配置docker远程服务
- (个人翻译)Scrivener交互式手册中文版FowWindows 03基础操作
- 零基础该怎样开始学编程?
- 遇到这样的事,是挺难受的
- Face Paper: DSSD论文详解
- 一些ps会遇到的问题
热门文章
- android+studio数独小游戏,App Store 上的“益智数独-每日一题挑战题,锻炼你的大脑”...
- 阅读,是最便宜的高贵
- 大学生计算机论文评语简短,大学生毕业论文评语
- 领英辅助工具领英精灵都有哪些功能
- 性能提升400倍丨外汇掉期估值计算优化案例
- 解决mysql的utf8编码中生僻字写入时Incorrect string value错误
- 立体html环形幻灯片效果,XML配置的三维旋转效果焦点幻灯片
- linux中stty参数,Linux如何使用stty命令
- 作团队感悟(8)----有效沟通
- 三星电视与android手机,三星难敌谷歌安卓,放弃自研系统Tizen,彻底沦为电视专属系统...