当前位置: 首页 > ops >正文

p5.js 三角形triangle的用法

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

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

triangle () 是什么?

triangle() 是 p5.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 运行):

在这里插入图片描述

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() 调边框粗细。

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

在这里插入图片描述

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);
}

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

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

在这里插入图片描述

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 吹吹水咯

在这里插入图片描述

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

http://www.xdnf.cn/news/16566.html

相关文章:

  • 【RAG搭建Agent应用实战】基于检索增强生成(RAG)搭建特定场景Agent应用
  • Git分支
  • c++ nlohmann/json读写json文件
  • 溶解能计算
  • 【24】C# 窗体应用WinForm ——日历MonthCalendar属性、方法、实例应用
  • 电磁兼容(EMC):整改案例(十三)屏蔽外壳开孔解决433MHz无线通信问题
  • hive专题面试总结
  • c++-list
  • Elasticsearch索引设计与性能优化实战指南
  • 查询mac 安装所有python 版本
  • vscode开发微信小程序
  • 2411.按位或最大的最小子数组长度
  • 信息技术发展与区块链的崛起:深度解析与未来展望
  • 基于web的在线购物系统的设计与实现/在线商城的设计与实现
  • 【微信小程序】12、生物认证能力
  • 从字符串中“薅出”最长子串:LeetCode 340 Swift 解法全解析
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——7. AI赋能(上):训练你自己的YOLOv8瑕疵检测模型
  • RTSP协议详解与C++实现实例
  • 津发科技带你了解皮肤电信号中的SCL与SCR
  • 深度解读|美创科技参编国家标准《数字水印技术实现指南》
  • windows 获取 APK 文件的包名和启动 Activity 名称
  • Kafka——Kafka控制器
  • 深入浅出设计模式——创建型模式之建造者模式 Builder
  • pnpm 入门与实践指南
  • ZKmall开源商城架构工具链:Docker、k8s 部署与管理技巧
  • [leetcode] 实现 Trie (前缀树)
  • 暑期算法训练.10
  • 【智能协同云图库】智能协同云图库第八弹:基于阿里云百炼大模型—实现 AI 扩图功能
  • 1 RAG三问
  • 云端文档管理新纪元:Paperless-ngx与cpolar打造的无边界文件生态