processing图片粒子化_个人见到的processing(优质且全的教程,一定看原文)

这篇教程介绍了Processing中的图片粒子化,并展示了如何利用Processing进行2D和3D图形绘制,包括椭圆、盒子等。同时,文章提及Processing与Java的相似性,以及如何使用库如VerletPhysics,讲解了全局变量、类和对象的概念,还涉及数据存储和3D相机控制。教程适合有一定编程基础的学习者。
摘要由CSDN通过智能技术生成

这个教程的一个好处是,还会介绍一些常用的库.

不介绍每个函数, ellipse, box 的参数, 很适合有程序经验的同学.

多个文件之间,想当于直接把多个文件放在一起执行.

同一个project 里面,不需要import

for (int i=0;i<20;i++) {

for (int j=0;j<20;j++) {

if (i<10) {

fill(255, 0, 0);

}else{

fill(255, 255, 0);

}

ellipse(i*20, j*20, 20, 20);

}

}

函数可以写在函数里面.

Ball myBall;

void setup() {

size(600, 600);

background(0);

myBall = new Ball(500, 100);

}

void draw()

{

myBall.display();

}

class Ball{

int x = 500;

int y = 500;

Ball(int x, int y){

this.x = x;

this.y = y;

}

void display(){

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值