前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >老鸟带你画tiled lines

老鸟带你画tiled lines

作者头像
ChildhoodAndy
发布2021-05-11 15:15:53
5280
发布2021-05-11 15:15:53
举报
文章被收录于专栏:小菜与老鸟小菜与老鸟

小菜:老鸟,你在敲啥子?

老鸟:我在画 tiled lines。

小菜:tiled lines?这是啥子?

老鸟:tile 是瓷片的意思,就是在瓷片中画线,最终形成的线条具有一定的艺术美感。我在用 processing 绘制瓷片线,这就是 tiled lines,咋样,好看不?

小菜:哇塞,好神奇耶!

老鸟:想了解不?

小菜:想!Show me the code!

Processing 是一门开源编程语言和与之配套的集成开发环境(IDE)的名称。Processing 在电子艺术和视觉设计社区被用来教授编程基础,并运用于大量的新媒体和互动艺术作品中。

设置画布

代码语言:javascript
复制
void setup() {
  size(1200, 760);  // 画布尺寸 1200 * 760
  background(255); // 背景白色
  
  stroke(0); // 画线黑色
  noFill(); // 无填充模式
  
  noLoop(); // 不进行帧循环
}

老鸟:这一步比较简单,主要是设置画布尺寸以及画笔相关的属性。

绘制

老鸟:其实核心部分就是这里啦。我们把问题拆解成两部分:

1)将画布根据设定的网格大小,拆分成一个个的网格

想象我们的房屋地板面积是 1200 * 760, 每一个地板瓷砖大小tileSize为 40。

2)在每一个瓷片中,随机绘制左上到右下或者右上到左下的对角线。

瞧,我画了一张图:

代码语言:javascript
复制
int tileSize = 40;

void draw() {
  for (int i = 0; i < width; i += tileSize) {
    for (int j = 0; j < height; j += tileSize) {
      tileDraw(i, j);
    }
  }
}

void tileDraw(int x, int y) {
   boolean tl2br = random(0, 1) > 0.5; // 一半概率是左上到右下对角线,一半概率是右上到左下对角线
   if (tl2br) {
     line(x, y, x + tileSize, y + tileSize); // 左上-右下
   } else {
     line(x + tileSize, y, x, y + tileSize); // 右上-左下
   }
}

保存图片

代码语言:javascript
复制
void keyPressed() {
  println(key);
  println("Key code pressed: " + keyCode);
  if (key == 's' || key == 'S') {
    saveFrame("tiled_lines.png");
  }
}

老鸟:这一步也简单,我们监听键盘按键,如果按下了小 s 键或者大 S 键,则保存图片到磁盘中。

发挥你的想象力

我们可以将线条颜色进行随机,以及加宽线条宽度

代码语言:javascript
复制
void tileDraw(int x, int y) {
   boolean tl2br = random(0, 1) > 0.5; // top left to bottom right
   strokeWeight(3);
   stroke(random(0, 255), random(0, 255), random(0, 255));
   if (tl2br) {
     line(x, y, x + tileSize, y + tileSize);
   } else {
     line(x + tileSize, y, x, y + tileSize);
   }
}

拜拜吧,文字,看视频号

老鸟花了点时间使用 manim 编程,生成了一个教学视频,已经上传到同名视频号,方便老铁们理解。


小菜与老鸟后期会不定期更新一些 Processing 绘制的代码思路分析,欢迎关注不迷路。也可以公众号后台发送关键字 processing,加我微信好友,拉你进 Processing 讨论群。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小菜与老鸟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设置画布
  • 绘制
  • 保存图片
  • 发挥你的想象力
  • 拜拜吧,文字,看视频号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档