p5.js 三角形triangle的用法

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

如果你刚接触 p5.js,想画一个三角形,那 triangle() 这个 API 就是你的好帮手!

triangle () 是什么?

triangle() 是 p5.js 里专门用来画三角形的函数。只要你告诉它三个点的位置,它就能自动把这三个点连起来,形成一个三角形。

基本用法:语法和参数

画三角形的语法超级简单:

js 复制代码
triangle(x1, y1, x2, y2, x3, y3)

这里的 6 个参数其实是三个点的坐标:

  • (x1, y1):第一个点的位置
  • (x2, y2):第二个点的位置
  • (x3, y3):第三个点的位置

注意 :p5.js 的坐标系里,左上角是原点 (0,0),向右 x 变大,向下 y 变大(和我们数学课本里的坐标系有点不一样哦)。

一个简单的三角形

先来画个最基础的三角形试试手,代码如下(可以直接复制到 p5.js Web Editor 运行):

js 复制代码
function setup() {
  createCanvas(400, 400); // 创建一个 400x400 的画布
}

function draw() {
  background(220); // 灰色背景
  // 画三角形:三个点分别是 (100,50)、(50,150)、(150,150)
  triangle(100, 50, 50, 150, 150, 150);
}

画布上会出现一个等腰三角形,顶点在上方 (100,50),底边两端在 (50,150)(150,150)

给三角形加颜色和边框

我们可以用 fill() 给三角形填充颜色,用 stroke() 改边框颜色,用 strokeWeight() 调边框粗细。

左边是纯红色三角形,右边是蓝色边框的空心三角形。

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

function draw() {
  background(255); // 白色背景
  
  // 红色填充、无边框的三角形
  fill(255, 0, 0); // 红色(RGB值)
  noStroke(); // 取消边框
  triangle(50, 50, 50, 150, 150, 100);
  
  // 蓝色边框、无填充的三角形
  noFill(); // 取消填充
  stroke(0, 0, 255); // 蓝色边框
  strokeWeight(3); // 边框粗3像素
  triangle(200, 50, 150, 150, 250, 150);
}

会跟着鼠标跑的彩色三角形

最后来个好玩的!让三角形跟着鼠标移动,而且颜色会随鼠标位置变化~

js 复制代码
function setup() {
  createCanvas(600, 400); // 更大的画布
}

function draw() {
  background(0); // 黑色背景,每次刷新清空画面
  
  // 获取鼠标当前位置
  let mouseXPos = mouseX;
  let mouseYPos = mouseY;
  
  // 定义三角形的三个点(围绕鼠标位置)
  let topX = mouseXPos;         // 顶点x(鼠标x)
  let topY = mouseYPos - 60;    // 顶点y(鼠标上方60像素)
  let leftX = mouseXPos - 50;   // 左下x(鼠标左方50像素)
  let leftY = mouseYPos + 50;   // 左下y(鼠标下方50像素)
  let rightX = mouseXPos + 50;  // 右下x(鼠标右方50像素)
  let rightY = mouseYPos + 50;  // 右下y(鼠标下方50像素)
  
  // 颜色随鼠标x坐标变化(从红到绿)
  let colorValue = map(mouseXPos, 0, width, 0, 255); 
  fill(colorValue, 255 - colorValue, 100); // 红→绿渐变
  
  // 画三角形
  triangle(topX, topY, leftX, leftY, rightX, rightY);
}

移动鼠标时,三角形会跟着跑,而且左边是红色,右边是绿色,中间是渐变的黄色~


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

也可以➕我 green bubble 吹吹水咯

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

相关推荐
用户0595401744621 小时前
LLM对话记忆测试踩坑实录:手工回归30分钟,自动化后2分钟发现3个隐藏Bug
前端·css
Ashley的成长之路1 天前
前端性能优化实战手册·第2篇:资源加载策略全解
前端·性能优化·资源加载·http/3·性能优化实战·资源加载优化
浅水壁虎1 天前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥1 天前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
Getflare1 天前
前端 + UI 设计 + AI:这不是三个工种,是一个新三角能力模型(附自检清单)
前端·人工智能·ui
oil欧哟1 天前
我做了一个 Vibe Coding 术语学习站:VibeHub
前端·ai·agent·独立开发·vibe coding
审小匠OpenCPAi1 天前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
Revolution611 天前
一个公共表格组件,是怎么一步步失控的
前端·前端工程化
腻害兔1 天前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程