p5.js 掌握圆锥体 cone

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

cone() 是 p5.js 中用于绘制三维圆锥体的函数。它属于 p5.js 的 3D 绘图功能,允许你在 3D 空间中创建圆锥形状。对于初学者来说,这是进入 3D 绘图世界的绝佳起点。

基本语法

cone() 函数的基本语法有两种形式:

最简化形式(使用默认参数):

javascript 复制代码
cone();

完整参数形式:

javascript 复制代码
cone(radius, height, detailX, detailY);
  • radius(可选):圆锥底部的半径,默认值为 50。
  • height(可选):圆锥的高度,默认值为 100。
  • detailX(可选):圆锥圆周方向的分段数,决定了圆锥的平滑度,默认值为 24。
  • detailY(可选):圆锥高度方向的分段数,默认值为 1。

绘制一个简单的圆锥

要使用 3D 函数,我们需要在 setup() 中创建一个 3D 画布,并在 draw() 中设置相机视角。

javascript 复制代码
function setup() {
  // 创建 3D 画布
  createCanvas(600, 400, WEBGL);
}

function draw() {
  background(220);
  
  // 旋转以便从不同角度看到圆锥
  rotateX(frameCount * 0.01);
  rotateY(frameCount * 0.01);
  
  // 设置填充色和边框色
  fill(100, 200, 255);
  stroke(0);
  strokeWeight(1);
  
  // 绘制圆锥 - 使用默认参数
  cone();
}
  1. createCanvas(600, 400, WEBGL):创建一个 600x400 像素的 3D 画布
  2. rotateX()rotateY():让圆锥随时间旋转,便于从多角度观察
  3. fill(100, 200, 255):设置圆锥的填充色为浅蓝色
  4. stroke(0)strokeWeight(1):设置圆锥边框为黑色,粗细为 1px
  5. cone():绘制一个默认大小的圆锥

你也可以通过下面这个示例了解各个参数的作用。

通过拖动滑块,你可以直观地看到:

  • 半径增大,圆锥底部变得更宽
  • 高度增加,圆锥变得更高
  • 水平分段数(detailX)越多,圆锥侧面越平滑
  • 垂直分段数(detailY)增加,圆锥会被分成多个水平切片
javascript 复制代码
let radius = 50;
let height = 100;
let detailX = 24;
let detailY = 1;

function setup() {
  createCanvas(800, 600, WEBGL);
  
  // 创建简单的控制面板
  createP('半径: ').position(10, 10);
  let rSlider = createSlider(10, 100, 50);
  rSlider.position(80, 20);
  rSlider.input(() => radius = rSlider.value());
  
  createP('高度: ').position(10, 50);
  let hSlider = createSlider(20, 200, 100);
  hSlider.position(80, 60);
  hSlider.input(() => height = hSlider.value());
  
  createP('水平分段数: ').position(10, 90);
  let dxSlider = createSlider(3, 48, 24);
  dxSlider.position(120, 100);
  dxSlider.input(() => detailX = dxSlider.value());
  
  createP('垂直分段数: ').position(10, 130);
  let dySlider = createSlider(1, 20, 1);
  dySlider.position(120, 140);
  dySlider.input(() => detailY = dySlider.value());
}

function draw() {
  background(220);
  
  // 添加简单的光照效果
  ambientLight(150);
  pointLight(255, 255, 255, 200, -150, 300);
  
  // 旋转
  rotateX(frameCount * 0.01);
  rotateY(frameCount * 0.01);
  
  // 绘制圆锥
  fill(100, 200, 255);
  stroke(0);
  cone(radius, height, detailX, detailY);
}

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

也可以➕我 green bubble 吹吹水咯

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

相关推荐
岁岁种桃花儿27 分钟前
Vue核心语法第十一篇:绑定样式
前端·javascript·vue.js
又吹风_Bassy34 分钟前
介于 NanoVG 和 Skia 之间:C++17 可嵌入式 2D 渲染库 WhatsCanvas 全面介绍
canvas·skia·2d渲染库·nanovg·开源渲染库·whatscanvas·whatsui
程序员黑豆8 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
To_OC9 小时前
踩了个 TS 的坑之后,我终于把 type 和 interface 掰明白了
前端·react.js·typescript
GreenTea9 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
浮生望9 小时前
前端API工程化:用 Mock 数据与 Axios 配置实现独立于后端的并行开发
前端
万少10 小时前
给 DeepSeek Harness 装个"应用商店":一条命令,595 个插件随你逛
前端·javascript·后端
波波00710 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
Brown.alexis11 小时前
es6知识点1-自备使用
前端·ecmascript·es6