processing图片粒子化_Processing(0.1 概述)

9c10de4b07b48f51aa02c4d2e82dd5cc.png

Processing是一种开源编程语言,是一门用来生成图片、动画和交互软件的编程语言,专门为电子艺术和视觉交互设计而创建,用于表达数字创意。

初次尝试书写自己的文章,但求尽一家之言,以发萤火之光

Processing从何而来?

MIT Media lab (麻省理工学院媒体实验室)→

  • 约翰·梅达(John Maeda)一位数字媒体界传奇性的艺术家与设计师,擅长将电脑程序的尖端的计算性与艺术的优雅表现作完美的结合。
  • 主导了“简易(Simplicity)计划”,是一项实验性的研究项目,意在开发新的设计技术,用于制造简明易用并能给人带来享受的产品。

Design by Number(Processing前身)→

  • 既是编程环境又是语言。 该环境为编写和运行程序提供了统一的空间,该语言介绍了在绘图环境中进行计算机编程的基本思想。 点,线和字段之类的可视元素与变量和条件语句的计算思想相结合,以生成图像。
  • John Maeda教授持续努力向设计师和艺术家传授计算理念的结果。

Processing

  • 一个灵活的软件速写本,是一种学习如何在视觉艺术的背景下编码的语言。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是用Processing实现图片粒子的代码,并附上注释: ```java // 导入图片库 import processing.core.PImage; // 定义画布大小 int canvasWidth = 600; int canvasHeight = 400; // 定义粒子数量 int particleCount = 3000; // 定义粒子的最大速度 float maxSpeed = 2; // 定义粒子的最大加速度 float maxForce = 0.05; // 定义粒子所受的斥力系数 float repulsion = 30; // 定义图片对象 PImage img; // 定义粒子数组 Particle[] particles = new Particle[particleCount]; void setup() { // 设置画布大小 size(canvasWidth, canvasHeight); // 加载图片 img = loadImage("image.jpg"); // 初始粒子数组 for (int i = 0; i < particles.length; i++) { particles[i] = new Particle(random(canvasWidth), random(canvasHeight)); } } void draw() { // 绘制背景色 background(255); // 绘制图片 image(img, 0, 0, canvasWidth, canvasHeight); // 更新粒子位置 for (int i = 0; i < particles.length; i++) { Particle p = particles[i]; p.update(); p.draw(); } } // 粒子类 class Particle { // 粒子位置 PVector pos; // 粒子速度 PVector vel; // 粒子加速度 PVector acc; // 粒子的大小 float size = 2; Particle(float x, float y) { pos = new PVector(x, y); vel = new PVector(random(-maxSpeed, maxSpeed), random(-maxSpeed, maxSpeed)); acc = new PVector(0, 0); } // 更新粒子位置 void update() { // 计算斥力 PVector repulsion = new PVector(0, 0); for (int i = 0; i < particles.length; i++) { Particle other = particles[i]; if (other != this) { float d = dist(pos.x, pos.y, other.pos.x, other.pos.y); if (d < repulsion) { PVector diff = pos.copy().sub(other.pos); diff.normalize().div(d); repulsion.add(diff); } } } // 计算加速度 acc.add(repulsion); acc.limit(maxForce); // 更新速度和位置 vel.add(acc); vel.limit(maxSpeed); pos.add(vel); // 重置加速度 acc.mult(0); } // 绘制粒子 void draw() { noStroke(); fill(img.get(int(pos.x), int(pos.y))); ellipse(pos.x, pos.y, size, size); } } ``` 以上代码通过计算每个粒子受到的斥力,来使粒子图片上呈现出粒子的效果。同时,还可以通过调整粒子数量、最大速度、最大加速度和斥力系数等参数,来获得不同的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值