p5.js图形绘制实战:几何图形与色彩艺术

p5.js图形绘制实战:几何图形与色彩艺术

【免费下载链接】p5.js p5.js is a client-side JS platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. It is based on the core principles of Processing. http://twitter.com/p5xjs — 【免费下载链接】p5.js 项目地址: https://gitcode.com/GitHub_Trending/p5/p5.js

你是否曾想过用几行代码就能创作出令人惊艳的视觉艺术?p5.js作为一款基于Processing理念的客户端JavaScript平台,让艺术家、设计师和初学者都能轻松在网页上实现创意编程。本文将带你掌握几何图形绘制与色彩运用的核心技巧,通过简单示例体验代码生成艺术的魅力。

环境准备与基础框架

p5.js采用Canvas(画布)作为绘图载体,所有视觉元素都在这个虚拟画布上呈现。从官网获取最新版本后,通过以下基础结构启动你的第一个项目:

<!DOCTYPE html>
<html>
  <head>
    <script src="https://cdn.jsdelivr.net/npm/p5@1.9.4/lib/p5.js"></script>
    <title>几何与色彩艺术</title>
  </head>
  <body>
    <script>
      function setup() {
        createCanvas(600, 400);  // 创建600×400像素的画布
        background(240);         // 设置浅灰色背景
      }

      function draw() {
        // 绘图代码将在这里循环执行
      }
    </script>
  </body>
</html>

上述代码定义了两个核心函数:setup()在程序启动时执行一次,用于初始化画布和设置参数;draw()则以默认60帧/秒的频率持续运行,形成动画效果。基础模板文件可参考p5.js项目结构中的示例

几何图形绘制基础

p5.js提供了丰富的基础图形绘制函数,让我们从最常用的几种开始探索:

矩形与圆形

矩形通过rect(x, y, width, height)函数绘制,其中(x,y)是矩形左上角坐标:

fill(255, 165, 0);       // 设置填充色为橙色
noStroke();              // 取消边框
rect(50, 50, 100, 80);   // 在(50,50)位置绘制100×80的矩形

圆形使用circle(x, y, diameter)函数,参数分别代表圆心坐标和直径:

fill(135, 206, 235);     // 天蓝色填充
circle(300, 200, 120);   // 中心画直径120的圆

复杂图形组合

通过组合基础图形,我们可以创建更复杂的图案。以下示例绘制一个简单的表情图标:

function draw() {
  background(240);
  
  // 脸部
  fill(255, 255, 0);
  circle(300, 200, 150);
  
  // 眼睛
  fill(0);
  circle(260, 170, 20);
  circle(340, 170, 20);
  
  // 嘴巴
  noFill();
  stroke(0);
  strokeWeight(5);
  arc(300, 220, 80, 60, 0, PI);  // 绘制半圆弧
}

这段代码展示了图形绘制的基本流程:设置样式(填充、描边)→ 调用绘制函数。所有图形绘制功能都基于p5.js核心渲染模块实现,该模块处理画布创建、尺寸调整和渲染上下文管理。

色彩系统与艺术表现

色彩是视觉表达的核心元素,p5.js提供了灵活的色彩控制机制,支持RGB、HSB等多种色彩模式。

RGB色彩基础

默认的RGB模式中,颜色由红(R)、绿(G)、蓝(B)三原色组成,每种颜色取值范围0-255:

fill(255, 0, 0);       // 纯红色
fill(0, 255, 0);       // 纯绿色
fill(0, 0, 255);       // 纯蓝色

添加第四个参数可控制透明度(Alpha):

fill(255, 192, 203, 128);  // 半透明粉色

色彩创建功能在src/color/creating_reading.js中实现,支持通过数值、数组或CSS颜色字符串创建颜色对象。

HSB色彩模式

HSB模式(色相、饱和度、亮度)更符合人类对色彩的直觉认知,通过colorMode(HSB)切换:

colorMode(HSB, 360, 100, 100);  // 色相0-360,饱和度0-100,亮度0-100
fill(120, 100, 100);            // 纯绿色(色相120°)

色彩渐变与艺术效果

通过颜色插值函数lerpColor()可以创建平滑的色彩过渡效果,实现渐变或彩虹等高级视觉效果:

function draw() {
  background(0);
  colorMode(HSB, 360, 100, 100);
  
  for (let x = 0; x < width; x++) {
    let hue = map(x, 0, width, 0, 360);  // 将x坐标映射为色相值
    let c = color(hue, 80, 90);
    stroke(c);
    line(x, 0, x, height);  // 绘制垂直线条形成彩虹渐变
  }
}

这段代码利用循环创建了从红到紫的连续色相渐变,展示了如何将数学概念转化为视觉艺术。

实践案例:动态几何构图

结合所学知识,我们来创建一个随鼠标交互的动态几何图案。这个案例将展示图形变换、色彩动态变化和用户交互的综合应用:

let angle = 0;

function setup() {
  createCanvas(600, 400);
  noStroke();
}

function draw() {
  background(245);
  translate(width/2, height/2);  // 将原点移至画布中心
  
  angle += 0.02;
  
  // 绘制旋转的几何图形组合
  for (let i = 0; i < 12; i++) {
    push();
    rotate(angle + i * radians(30));  // 每个图形旋转不同角度
    
    // 根据鼠标位置调整颜色和大小
    let size = map(mouseX, 0, width, 50, 150);
    let hue = map(mouseY, 0, height, 0, 360);
    fill(hue, 70, 90, 150);
    
    rect(0, 0, size, size/2);  // 绘制矩形
    pop();
  }
}

这个互动作品中,矩形阵列会随时间旋转,同时其大小和颜色会响应鼠标位置变化。push()pop()函数用于保存和恢复坐标系状态,实现复杂的图形变换。

总结与进阶方向

通过本文学习,你已经掌握了p5.js的基础图形绘制和色彩控制能力。这些知识是创意编程的基础,在此之上你可以探索更高级的主题:

  • 3D图形:使用p5.js的WebGL模式创建三维空间作品
  • 粒子系统:通过大量微小图形模拟自然现象
  • 图像滤镜:利用像素操作实现照片处理效果
  • 交互装置:结合传感器数据创作实体互动艺术

p5.js社区提供了丰富的学习资源和示例作品,官方参考文档和示例库是继续深入学习的绝佳起点。记住,创意编程的核心不是代码本身,而是通过代码表达创意和思想的能力。现在就开始你的创作吧!

p5.js图形示例

【免费下载链接】p5.js p5.js is a client-side JS platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. It is based on the core principles of Processing. http://twitter.com/p5xjs — 【免费下载链接】p5.js 项目地址: https://gitcode.com/GitHub_Trending/p5/p5.js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值