p5.js 线段的用法

点赞 + 关注 + 收藏 = 学会了

线段是最基础的图形元素,就像画画时的 "线条"------ 用它可以勾勒轮廓、连接形状,甚至组合出复杂的图案。p5.js 的 line() 函数能轻松画出线段,语法比原生 Canvas 要好理解多了。

认识 line ():线段的 "绘图指令"

什么是 line ()?

line() 是 p5.js 中用于绘制线段的函数,作用就像用直尺在两点之间画一条直线。它是最基础的绘图工具之一,也是组合复杂图形的 "积木"------ 比如画正方形需要 4 条线段,画三角形需要 3 条线段。

核心语法:4 个参数画一条线

在 2D 模式下,line() 只需要 4 个参数就能画一条线段:

js 复制代码
line(x1, y1, x2, y2)

参数解释

  • x1, y1:线段起点的坐标(比如 "从画布左边 100 像素、上边 50 像素的位置开始")
  • x2, y2:线段终点的坐标(比如 "到画布左边 200 像素、上边 150 像素的位置结束")

举个例子:line(50, 30, 200, 100) 会画出一条从 (50,30) 到 (200,100) 的线段。

线段的 "特性"

  • 线段没有 "填充色":fill() 函数对线段无效(线段只有轮廓,没有内部)。
  • 样式靠这两个函数:用 stroke(颜色) 设线段颜色,strokeWeight(粗细) 设线段宽度。
  • 3D 模式可选:如果想画 3D 线段,需要用 6 个参数(x1,y1,z1,x2,y2,z2),入门阶段先掌握 2D 即可。

第一条线段

从最简单的例子开始,感受 line() 的用法,再逐步添加样式。

基础线段绘制

js 复制代码
function setup() {
  createCanvas(400, 300); // 创建400×300的画布
  background(240); // 浅灰色背景
}

function draw() {
  // 画一条从左上角到右下角的线段
  line(50, 50, 350, 250);
}

浅灰色画布上,会出现一条默认黑色、细线条的线段,从 (50,50) 斜着延伸到 (350,250)。起点 (50,50) 是画布左上方的位置,终点 (350,250) 是右下方的位置,线段自然斜向右下方。

给线段 "换衣服"(设置样式)

线段默认是黑色细线条,用 stroke()strokeWeight() 可以改变它的 "外观":

js 复制代码
function setup() {
  createCanvas(400, 300);
  background(240);
  noLoop(); // 只画一次,不重复刷新
}

function draw() {
  // 1. 红色粗线段(宽度5像素)
  stroke(255, 0, 0); // 红色(RGB值)
  strokeWeight(5); // 线段粗细5像素
  line(50, 80, 350, 80); // 水平线段(y坐标相同)

  // 2. 蓝色中等粗细线段(宽度3像素)
  stroke(0, 0, 255); // 蓝色
  strokeWeight(3);
  line(50, 140, 350, 140);

  // 3. 绿色细线段(宽度1像素,默认)
  stroke(0, 255, 0); // 绿色
  strokeWeight(1);
  line(50, 200, 350, 200);
}

三条水平线段从上到下排列,分别是红色粗线、蓝色中线、绿色细线,清晰展示样式差异。

  • stroke(r, g, b):通过 RGB 颜色值设置线段颜色(0-255,比如纯红是 (255,0,0))
  • strokeWeight(数值):数值越大,线段越粗(默认 1 像素)
  • 水平线段的秘诀:起点和终点的 y 坐标相同(比如都是 80),x 坐标不同

用线段组合简单图形

线段的真正力量在于 "组合"------ 几条线段能拼出矩形、三角形等基础图形:

js 复制代码
function setup() {
  createCanvas(400, 300);
  background(255); // 白色背景
  noLoop();
}

function draw() {
  stroke(0); // 黑色线段
  strokeWeight(2);

  // 1. 画三角形(3条线段)
  line(100, 100, 180, 200); // 左边
  line(180, 200, 20, 200); // 底边
  line(20, 200, 100, 100); // 右边
  text("三角形(3条线段)", 40, 240);

  // 2. 画矩形(4条线段)
  line(220, 100, 350, 100); // 上边
  line(350, 100, 350, 200); // 右边
  line(350, 200, 220, 200); // 下边
  line(220, 200, 220, 100); // 左边
  text("矩形(4条线段)", 240, 240);
}

白色画布上,左边是三角形,右边是矩形,都是用黑色线段拼出的轮廓。

  • 三角形:3 条线段首尾相连(A→B,B→C,C→A)
  • 矩形:4 条线段,相邻边垂直(上边水平,右边垂直)

线段的动态效果

线段不仅能画静态图形,结合 draw() 函数的自动刷新(每秒 60 次),还能做出动态效果 ------ 比如移动的线条、跟随鼠标的线条。

跟随鼠标的 "追踪线"

让线段的一端固定,另一端跟随鼠标移动,形成实时追踪效果:

js 复制代码
function setup() {
  createCanvas(400, 300);
  background(240);
}

function draw() {
  background(240); // 每次刷新画布,清除上一帧轨迹
  stroke(139, 69, 19); // 棕色线段
  strokeWeight(3);

  // 线段起点固定在(200,150),终点是鼠标位置
  line(200, 150, mouseX, mouseY);

  // 显示提示文字
  fill(0);
  noStroke(); // 文字无轮廓
  text("移动鼠标试试", 20, 20);
}

一条棕色线段从画布中心出发,另一端始终跟着鼠标移动,像 "指针" 一样追踪鼠标位置。

  • mouseXmouseY 是 p5.js 的内置变量,实时获取鼠标的 x、y 坐标
  • background(240) 每次刷新画布,避免留下之前的线段轨迹
  • 线段的终点随鼠标坐标变化,形成动态效果

以上就是本文的全部内容啦,想了解更多 P5.js 用法欢迎关注 《P5.js中文教程》

也可以➕我 green bubble 吹吹水咯

点赞 + 关注 + 收藏 = 学会了

相关推荐
gnip10 分钟前
链式调用和延迟执行
前端·javascript
杨天天.23 分钟前
小程序原生实现音频播放器,下一首上一首切换,拖动进度条等功能
前端·javascript·小程序·音视频
Dragon Wu33 分钟前
React state在setInterval里未获取最新值的问题
前端·javascript·react.js·前端框架
YU大宗师37 分钟前
React面试题
前端·javascript·react.js
IT毕设梦工厂1 小时前
大数据毕业设计选题推荐-基于大数据的国家医用消耗选品采集数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·信息可视化·spark·毕业设计·数据可视化·bigdata
给月亮点灯|2 小时前
Vue基础知识-Vue集成 Element UI全量引入与按需引入
前端·javascript·vue.js
三思而后行,慎承诺2 小时前
Reactnative实现远程热更新的原理是什么
javascript·react native·react.js
知识分享小能手3 小时前
React学习教程,从入门到精通,React 组件生命周期详解(适用于 React 16.3+,推荐函数组件 + Hooks)(17)
前端·javascript·vue.js·学习·react.js·前端框架·vue3
lxh01133 小时前
LRU 缓存
开发语言·前端·javascript
wow_DG3 小时前
【Vue2 ✨】Vue2 入门之旅 · 进阶篇(二):虚拟 DOM 与 Diff 算法
开发语言·javascript·vue.js·算法·前端框架