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

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

相关推荐
2601_955760071 小时前
如何用 Claude Opus 5 API 批量扩展长尾关键词和文章选题
前端·python·搜索引擎
KaMeidebaby1 小时前
卡梅德生物技术快报|bli亲和力检测gst:告别批量跑胶:BLI实时酶切监测技术加速GST融合蛋白下游流程优化
前端·网络·数据库·人工智能·算法
触底反弹1 小时前
🚀 删了数据刷新又回来?3 组件 × 4 回调 × 3 坑讲透 React 父子通信
前端·javascript·react.js
耳东小鹿2 小时前
对象常用方法
前端
程序员海军2 小时前
一个 AI 应用开发程序员的一天,都在屏幕前忙些什么?
前端·后端·程序员
程序员黑豆3 小时前
鸿蒙应用开发:Stack堆叠组件实战——实现微信消息角标效果
前端·harmonyos
夏幻灵3 小时前
浏览器原理深度解析:从输入 URL 到页面展现的全流程剖析
前端
闲猫3 小时前
Agent工程实践:从WorkFlow到多Agent协作的落地笔记
java·服务器·前端
带娃的IT创业者3 小时前
重新定义前端构建速度:深度解析 SWC 如何用 Rust 颠覆 JavaScript 工具链
前端·javascript·rust·前端构建·swc
happy_0x3f4 小时前
前端应用的离线暂停更新策略
开发语言·前端·php