processing代码_Processing代码解析||粒子聚合

d15a4dd01b36db42f1a49781f3fbb870.gif

图片来源 https://www.openprocessing.org/sketch/377231

引言:

我们在openprocessing经常见到类似这样的视觉效果,今天就来解析一份粒子聚合成特定形状的代码,看看类似的效果是怎么实现的。

目标效果:

自由运动小球--(趋近运动)-->图像上的位置

要点拆分:

  • 为小球类建立一个变量储存其在图像上的位置,即目标位置

  • 在setup初始化中,算好每个小球在图像上的目标位置

  • 让小球在图像上的目标位置之间互不重叠,尽量覆盖还原图形

  • 切换聚集成像状态时,小球从当前位置趋向运动到目标位置

00a633379c7ae471d823fd2a3c804b7b.gif

目标位置变量

首先在ball_class(小球的类)中新建一个向量数组变量oriPos[],因为我们会在三个图形上切换变化,所以此处用数组,向量数组oriPos[]将存储小球分别在三个图像上的目标位置。

有关class类的基本知识点已经做过讲解(Processing教程 - 类和动态数组)。

--

寻找目标位置及重合检测

因为最终目的是要让小球聚合成data文件夹中图片的形状,所以事先在setup部分做oriPos[]位置的计算。基本思路是,在画面中随机找一个位置,判断该位置对应像素在形状图片上的颜色是否为白色,同时判断该位置是否和前序小球已经找定的目标位置有重合,如果对应像素颜色为白色,并且该位置没有与任何已定目标位置重合,则将其储存为当前小球的目标位置,否则重新随机找一个位置,并继续判断,循环,直到满足条件。

PImage[] heart;//底图图片数组
Ball[] ball;/

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值