Porcessing 是一款用于交互艺术和创意编程的工具。最早基于java开发,几年来同时推出了JavaScript版本p5.js,以及python版本processing.py。同时对于安卓机和树莓派也有了针对性的支持。它为艺术家和各种创意编程视觉表达的人士提供了有效的编程语言和数字接口,目前广泛应用于生成艺术、编程艺术和新媒体交互艺术等等领域。

1.安装

针对自己习惯的语言可以选择不同的接口进行学习。在这里可以按照自己的操作西东选择对应版本,下载包含集成开发环境的整个工具包,安装后可以选择不同的开发模式(Python/java)
另外,JavaScript文件可以在这里下载:p5.js。

2.开始动手写第一个程序

选择java环境来学习processing。作为java下的一个巨大分支,processing遵循java语法,并可以涵盖一系列工具库来拓展自身能力。processing原生的库包含了形状、颜色、控制等15类功能函数, 可以用这些函数来定义我们想要的图形和颜色、图像位置和组合、随时间的运动方式从而组合出一系列绚丽多彩的艺术作品。

2.1基本集合形状—线和圆

首先先从简单的几何图形开始绘制,学习并体会processing的功能。

//Draw a line
line(0,0,100,100);   //注意加英文分号

在编辑器中输入上面的代码,并点击运行按钮,就可以看到一条直线已经被画出来啦!

上面代码中我们使用了第一个函数line(x1,y1,x2,y2),分别输入起始和终止点的xy坐标,这个函数会在两点间绘制一条线。(注意:这里的坐标单位都是像素pixel,左上角为原点

那么再来画一个

//Draw a circle
ellipse(50,50,80,80);


需要指出的是,圆是一种特殊的椭圆,只要指定长轴和短轴相同即可。上面的函数ellipse(centerX,centerY, width, height),中需要输入圆心坐标xy和对应的长宽。比如我们来个椭圆:

//Draw a circle
ellipse(50,50,100,80);

再来画个矩形

//draw a rectangle
rect(10,10,50,50)


其中函数rect(leftupprX,leftupperY,width,height),需要输入左上角坐标和对应的宽高。

画个三角形

//draw a triangle
triangle(0,0,50,20,100,10)


函数triangle(x1, y1, x2, y2, x3, y3),输入三角形的三个顶点即可绘制。

四边形也是可以的:

//draw a quadrilateral polygn
quad(8, 31, 86, 20, 69, 83, 30, 76);


函数quad(x1, y1, x2, y2, x3, y3,x4,y4)顺序写入四个点的xy坐标即可。

当然,画一个像素点也是可以的

//draw point
point(30,20)

但是,美中不足的是上面画出的颜色太灰暗了,我们能不能修改下背景/颜色呢?
接下来就需要学习如何改变背景的颜色,隆重引入void setup()

2.2 “画布”设置

为了将我们的背景设置为我们喜欢的颜色,需要使用一个全局的配置函数setup()来进行对我们的绘图窗口进行设置。它可以指定我们窗口的大小、背景颜色、图形边界等等各种指标。

void setup()
{size(100, 100);    //设置画布大小background(#FFF0DB);  //background(r,g,b)
}void draw()
{triangle(0,0,100,0,100,100);fill(#6acfb1);
}


比刚才漂亮多了。在上面的代码里,有三个知识点需要注意:
a.void setup()表示我们定义了一个设置函数,由于它的作用只是设置,没有返回任何值,所以用void来定义它的属性;
b.size(width,height)定义了画布的尺寸,background(rgb/hexcolor)定义了背景颜色,可以是rgb形式、十六进制形式也可以加alpha通道;
c.void draw()定义了一个绘图函数这里面包含的代码是绘图时使用的。我们首先绘制了一个三角形,而后用fill(rgb/hex)为填充了对应的颜色。

上面图中的画出绿色三角形有一个黑边不太好看,我们可以在绘图前加上去除边缘的命令noStroke():

void setup()
{size(100, 100);    //设置画布大小background(#FFF0DB);  //background(r,g,b)
}void draw()
{noStroke();triangle(0,0,100,0,100,100);fill(#6acfb1);
}

3.第一个作品

学习了上面的这些基本技巧后,我们就可以来绘制自己第一个作品了。

void setup()
{size(400,200);   //设置画布background(#FFF0DB);  //background(r,g,b)}void draw(){noStroke();fill(#6acfb1);    //多次使用的时候要先fill再绘制形状。triangle(0,0,100,0,100,100);fill(#ffdbbb);triangle(100,100,100,200,200,200);fill(#ffdbcb);triangle(200,100,300,100,300,0);fill(#ff3bcb);rect(300,100,50,50);
}


ref:
tutorials:https://processing.org/tutorials/gettingstarted/
doc:https://processing.org/reference/
http://www.cnblogs.com/mysunnytime/p/3423375.html
http://www.cnblogs.com/justinzhang/p/4357702.html
http://www.cnblogs.com/djcsch2001/archive/2011/10/06/2200226.html

pic from pexels.com

【Processing学习笔记】安装与入门相关推荐

  1. redis学习笔记-安装与入门

    Linux下安装redis mkdir /usr/local/redis && cd /usr/local/redis 下载:wget http://download.redis.io ...

  2. Hadoop学习笔记(1) ——菜鸟入门

     Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户能够在不了解分布式底层细节的情况下.开发分布式 ...

  3. 【学习笔记】Mininet 入门

    [学习笔记]Mininet入门实战 课程介绍 Mininet是由一些虚拟的终端节点.交换机.路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美. Mininet可以很 ...

  4. iOS学习笔记-地图MapKit入门

    代码地址如下: http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错 ...

  5. 【学习笔记】密码学入门(2) 单向散列函数,消息认证码,数字签名,证书

    [学习笔记]密码学入门(2) 单向散列函数,消息认证码,数字签名,证书 学习笔记 2 – 混合密码系统 在密码学入门(1)中提到了基本的密码形式,对称密码和公钥密码以及混合密码系统. 这一部分将学习到 ...

  6. 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体

    本文是 系列笔记DirectX部分的第2篇,上一篇参见 逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架 这个示例增加了一些实际的内容,首先是绘制一个颜色随机变幻的彩色立方体,其二是显示 ...

  7. oracle 删除awr报告,学习笔记:Oracle awr入门 深入了解AWR报告

    天萃荷净 深入了解AWR报告,ASH与AWR报告的官方说明,数据库进程和性能视图获取 1.AWR与ASH概念 1.ASH 若是一个普通的会话(我是指没有大量地耗费资源),则对于性能调整来说无足轻重.但 ...

  8. oracle rman ora19602,学习笔记:OracleRMAN备份入门 将RMAN备份数据放到nfs远程文件系统中...

    天萃荷净 rman通过nfs备份,记录一篇关于使用RMAN备份软件,将RMAN的备份结果集存放到远程的NFS文件系统中 1.RMAN挂载至nfs文件系统 [root@oracleplus tmp]# ...

  9. 【学习笔记】JavaWeb入门篇—HTML

    [学习笔记]JavaWeb入门篇-HTML

  10. Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用

    Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用 按照官网教程学习使用组件,并且重点把容器组件的应用进行了练习. 1.官网关于组件的介绍 组件是视图层的基本组成单元,是一个单独且可复用的 ...

最新文章

  1. windows下Python+Editplus windows Python开发环境
  2. Android Paint 画笔使用详解 Android自定义View(六)
  3. TensorFlow tf.keras.losses.CategoricalHinge
  4. 双核CPU揭密:英特尔/AMD没有告诉你的五项事实【ZZ】
  5. 一文读懂什么是数据库事务
  6. 【转】请求处理机制其二:Django中间件的解析
  7. 学生管理系统数据库设计
  8. python生成手写汉字字体_「zi2zi」:用AI生成自己的手写字体
  9. 医学图像预处理之CT成像原理
  10. ECPC16-E. Jumping(bfs)
  11. 2D基本知识入门学习
  12. WIN10任务栏卡死,鼠标一直转圈(亲测有效)
  13. 国产化图形引擎一词引发的感想!
  14. 网络课程学习视频的快进播放和去除鼠标移动视频暂停的问题
  15. 面试题 05.08. 绘制直线
  16. 植物大战僵尸:学会使用人造指针
  17. Linux性能优化:性能优化工具
  18. 屏幕翻拍_带有现代翻拍的前5大经典合作游戏
  19. 不要再说微服务可以解决一切问题了
  20. 无线蓝牙模块在汽车DSP的应用

热门文章

  1. RabbitMQ安装FAQ(接前面一篇)
  2. self-attention的作用,理解
  3. webstorm 左侧文件目录树(不显示,怎么办?) - 设置篇
  4. jQueryEasyUI框架 - panel 选项卡高度自适应
  5. javascript 性能 · 平稳退化、渐进增强
  6. 独角兽导航带音乐带后台带客服
  7. 好看的粉色树洞表白墙网站源码
  8. 文本分类模型_多标签文本分类、情感倾向分析、文本实体抽取模型如何定制?...
  9. 电脑硬盘数据线_这40种电脑故障的排除技巧你都掌握了吗?
  10. c++ cstring 转换 char_Java基本数据类型的介绍及其转换(内附字符串与多种数据之间的转换)...