Processing-当使用代码来绘画

最近机缘巧合知道了processing,加上原本对艺术方面感兴趣,便试着学了下,中间也做出了很多有趣的作品,下面简单介绍下processing和近期写的程序。

官网介绍如下:

Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping.

也就是说processing是个软件速写本也是一门语言,个人认为更偏向前者,processing是基于JAVA语言实现的, 从语法和数据类型上和JAVA或C++类似,因此学起来也比较快。

下面是一些简单的作品:

随机位置随机大小绘制半透明圆,色系还挺好看的嘿嘿。

同样的原理,简单的渐变色笔触,不过可以看出来很多圆圈,之后深入学再看怎么去掉。

 

让人想到地砖哈哈。

说不出来的感觉,有点眼熟,不知道在哪看过。

根据中心距离计算颜色。然后就想做个动态的涟漪效果。

 

好像也不是涟漪的效果emmm

最后就是用processing实现的一个生命游戏,挺有趣的哈,写了一点交互的逻辑,可以控制开始和停止,随时添加新的生命,改变演化速度。自己玩的时候试了下滑翔机记忆高斯帕滑翔机枪,确实有相应的效果。

中间调节了一下速度。

著名的高斯帕滑翔机枪。不过初始图像画起来好麻烦,好奇是怎么发现这种复杂又有规律的图案的。 

如果对生命游戏代码有兴趣的可以去我的资源里下载。之后有时间还会慢慢学习processing,期望能做出更好看的图案和更好的交互效果。

使用 Processing 绘画梵高的星空,可以参考以下步骤: 1. 打开 Processing 开发环境,创建一个新的 Sketch,并保存为 `vangogh_star_sky`。 2. 在 Sketch 中,使用 `size()` 函数设置画布的大小,建议设置为 800x600。 ```processing void setup() { size(800, 600); } ``` 3. 添加一个变量 `starNum` 用于控制星星的数量,可以根据需要进行调整。 ```processing int starNum = 200; ``` 4. 创建一个 `Star` 类,用于表示星星的位置和大小。在 `Star` 类中,添加一个构造函数用于初始化星星的位置和大小,并添加一个 `show()` 方法用于绘制星星。 ```processing class Star { float x, y, size; Star() { x = random(width); y = random(height); size = random(1, 4); } void show() { noStroke(); fill(255, 255, 200); ellipse(x, y, size, size); } } ``` 5. 在 Sketch 中,创建一个 `stars` 数组,用于存储所有的星星,并在 `setup()` 函数中使用 `for` 循环创建指定数量的星星。 ```processing Star[] stars = new Star[starNum]; void setup() { size(800, 600); for (int i = 0; i < starNum; i++) { stars[i] = new Star(); } } ``` 6. 在 Sketch 中,使用 `draw()` 函数绘制星空。在 `draw()` 函数中,首先绘制背景色,然后遍历所有的星星并绘制出来。 ```processing void draw() { background(0); for (int i = 0; i < starNum; i++) { stars[i].show(); } } ``` 7. 最后,保存并运行代码,即可在屏幕上看到绘制出来的梵高星空。 完整代码如下: ```processing int starNum = 200; class Star { float x, y, size; Star() { x = random(width); y = random(height); size = random(1, 4); } void show() { noStroke(); fill(255, 255, 200); ellipse(x, y, size, size); } } Star[] stars = new Star[starNum]; void setup() { size(800, 600); for (int i = 0; i < starNum; i++) { stars[i] = new Star(); } } void draw() { background(0); for (int i = 0; i < starNum; i++) { stars[i].show(); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mrbone11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值