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

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

相关推荐
一只卡比兽几秒前
动态规划与贪心算法详解:原理、对比与代码实践
前端
aiwery3 分钟前
一文掌握 TypeScript 工具类型:Record、Partial、Omit、Pick 等实战用法
前端·代码规范
ankleless17 分钟前
C语言(12)——进阶函数
前端·html
一条上岸小咸鱼21 分钟前
Kotlin 基本数据类型(四):String
android·前端·kotlin
我是哈哈hh36 分钟前
【Node.js】ECMAScript标准 以及 npm安装
开发语言·前端·javascript·node.js
张元清1 小时前
电商 Feeds 流缓存策略:Temu vs 拼多多的技术选择
前端·javascript·面试
一枚前端小能手1 小时前
🎨 CSS布局从入门到放弃?Grid让你重新爱上布局
前端·css
晴空雨1 小时前
React 合成事件原理:从事件委托到 React 17 的重大改进
前端·react.js
魏嗣宗1 小时前
Node.js 网络编程全解析:从 Socket 到 HTTP,再到流式协议
前端·全栈
pepedd8641 小时前
还在开发vue2老项目吗?本文带你梳理vue版本区别
前端·vue.js·trae