p5.js:绘制各种内置的几何体,还能旋转

移动端显示p5.js 移动端显示p5.js 编辑器:vs code+vs code的 live server 插件 操作系统:osx 准备工作: (1)在vs code中下载live server 插件 (2)将电脑连接上手机热点 (3)新建html文件并复制下面代码,保存文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" conten 阅读详情

向 豆包 提问:请编写 p5.js 示例, 绘制各种内置的几何体,能让这些几何体缓慢旋转。

cd p5-demo
copy .\node_modules\p5\lib\p5.min.js .

此代码创建了一个包含多个内置几何体的 3D 场景,每个几何体都有不同的颜色和位置。运行代码后,你会看到球体、立方体、圆锥体、圆柱体、圆环体和椭球体在画布上的展示。
编写  p5_demo_6.html  如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>p5.js Geometries</title>
  <script src="p5.min.js"></script>
</head>
<body>
<script>
    let angle = 0;

    function setup() {
      createCanvas(1000, 600, WEBGL);
    }

    function draw() {
      background(220);
      angle += 0.01;

      // 绘制球体 sphere
      push();
      translate(-300,-150, 0);
      rotateX(angle);
      rotateY(angle);
      stroke(255, 100);
      fill(128, 0, 0);
      sphere(100);
      pop();

      // 绘制立方体 box
      push();
      translate(0,-150, 0);
      rotateX(angle);
      rotateY(angle);
      stroke(255, 100);
      fill(128, 128, 128);
      box(150);
      pop();

      // 绘制圆锥体 cone
      push();
      translate(300,-150, 0);
      rotateX(angle);
      rotateY(angle);
      stroke(255, 100);
      fill(0, 0, 128);
      cone(100, 200);
      pop();

      // 绘制圆柱体 cylinder
      push();
      translate(-300, 100, 0);
      rotateX(angle);
      rotateY(angle);
      stroke(255, 100);
      fill(128, 128, 0);
      cylinder(100, 200);
      pop();

      // 绘制圆环体 torus
      push();
      translate(0, 100, 0);
      rotateX(angle);
      rotateY(angle);
      stroke(255, 100);
      fill(128, 0, 128);
      torus(100, 30);
      pop();

      // 绘制椭球体 ellipsoid
      push();
      translate(300, 100, 0);
      rotateX(angle);
      rotateY(angle);
      stroke(255, 100);
      fill(0, 128, 128);
      ellipsoid(100, 150, 50);
      pop();
    }

</script>
</body>
</html>

在上述代码中,定义了一个变量 angle 用于控制旋转角度。在 draw 函数里,每次绘制时 angle 都会增加 0.01,然后通过 rotateX 和 rotateY 方法让每个几何体绕 X 轴和 Y 轴旋转。这样就实现了几何体的缓慢旋转效果。

双击打开 p5_demo_6.html 


向 chat.deepseek.com 提问:请编写 p5.js 脚本,绘制各种内置的几何体,还能缓慢旋转。

下面是一个使用 p5.js 绘制各种内置几何体并使它们缓慢旋转的示例代码。这个脚本将绘制立方体、球体、圆锥体和圆柱体,并使它们围绕 Y 轴旋转。

编写 p5_demo_4.html  如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>p5.js Geometries</title>
  <script src="p5.min.js"></script>
</head>
<body>
<script>
let angle = 0;

function setup() {
  createCanvas(800, 600, WEBGL);
}

function draw() {
  background(30);
  
  // 设置光照
  pointLight(255, 255, 255, 0, 0, 500);
  ambientLight(100);
  
  // 绘制立方体
  push();
  translate(-width/4, -height/4, 0);
  rotateY(angle);
  fill(255, 0, 0);
  box(100);
  pop();
  
  // 绘制球体
  push();
  translate(width/4, -height/4, 0);
  rotateY(angle);
  fill(0, 255, 0);
  sphere(70);
  pop();
  
  // 绘制圆锥体
  push();
  translate(-width/4, height/4, 0);
  rotateY(angle);
  fill(0, 0, 255);
  cone(70, 150);
  pop();
  
  // 绘制圆柱体
  push();
  translate(width/4, height/4, 0);
  rotateY(angle);
  fill(255, 255, 0);
  cylinder(70, 150);
  pop();
  
  // 更新旋转角度
  angle += 0.01;
}
</script>
</body>
</html>

 双击打开 p5_demo_4.html 

代码说明:

  1. setup() 函数:初始化画布并设置为 3D 模式(使用 WEBGL)。

  2. draw() 函数:每一帧都会调用这个函数来绘制几何体。

  3. push() 和 pop():用于保存和恢复当前的绘图状态,确保每个几何体的变换不会影响其他几何体。

  4. translate():将几何体移动到画布的不同位置。

  5. rotateY():使几何体围绕 Y 轴旋转。

  6. box()、sphere()、cone()、cylinder():分别绘制立方体、球体、圆锥体和圆柱体。

  7. angle:用于控制旋转的角度,每一帧增加 0.01,使几何体缓慢旋转。

运行效果:

  • 立方体、球体、圆锥体和圆柱体会分别位于画布的四个象限。

  • 所有几何体会围绕 Y 轴缓慢旋转。

  • 使用了点光源和环境光来增强视觉效果。


DeepSeek 还提供了程序员喜欢的示例 p5_demo_5.html 享受编程的快感。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>p5.js Geometries</title>
  <script src="p5.min.js"></script>
</head>
<body>
<script>
function setup() {
  createCanvas(1000, 600, WEBGL);
}

function draw() {
  background(220);
  rotateY(frameCount * 0.01); // 全局旋转
  // [ 立方体, 球体, 圆柱体, 圆锥体, 圆环体 ]
  const geometries = ['box','sphere','cylinder','cone','torus'];
  const spacing = 250;
  for (let i=0; i< geometries.length; i++) {
    push();
    translate(-spacing*2 + spacing*i, 0, 0);
    rotateZ(frameCount * 0.01);
    
    switch(geometries[i]) {
      case 'box':
        fill(255,0,0);
        box(50);
        break;
      case 'sphere':
        fill(0,255,0);
        sphere(50);
        break;
      case 'cylinder':
        fill(0,0,255);
        cylinder(50,100);
        break;
      case 'cone':
        fill(255,255,0);
        cone(50,100);
        break;
      case 'torus':
        fill(255,0,255);
        torus(50,20);
        break;
    }
    pop();
  }
}
</script>
</body>
</html>

双击打开 p5_demo_5.html 

使用P5.js来制作一个快乐的小风车动画 前一段时间偶然了解到一个觉得很好玩儿的东西p5.js,于是就去了解了一下,发现可以自己设计一些有趣的动画效果,设计出来的动画可以放置到页面当中,而且也是简单易学的。 下面是一段官方的介绍: p5.js是一个以 Processing语言(java的图形化语言)为基础的JavaScript 库,经常用于互联网数据可视化和互动艺术创作。它继承了Processing语言的初衷,通过简单的编程即可表达数字创意 阅读详情

相关推荐

p5.js 光速入门中文教程

本文简介 点赞 + 关注 + 收藏 = 学会了 本文的目标是和各位工友一起有序的快速上手 p5.js ,会讲解 p5.js 的基础用法。 本文会涉及到的内容包括: 项目搭建 p5.js 基础2D图形 文字 图形样式设置 图片 事件(交互相关的) 基础动画 其中还会讲解部分 p5.js 全局方法。 本文不涉及3d部分(放到下一篇吧)。 官方文档很重要,但对于初学者来说可能会有点懵。因为官方文档主要讲解api的用法,第一次接触p5.js的工友可能不是那么容易将各个知识点串联起来。 本文在基于官方案例

weixin_39415598的博客 2185

p5.js 绘制趣味图形

p5.js绘制趣味图形

weixin_53261137的博客 938

threejs 形状几何体_使用Playcanvas.js实现的3D几何体/形状

JavaScript语言:JaveScriptBabelCoffeeScript确定// THIS SHOWS ALL THE GEOMETRIC SHAPES YOU CAN CREATE OUT OF THE BOX WITH PLAYCANVAS!!!// https://github.com/playcanvas/enginevar canvas = document.getElement...

weixin_28881989的博客 829

P5——绘制图像

函数表示开始创建自定义图形函数定义这个形状中每个顶点的坐标endShape()函数表示形状已经完成margin : 0;// 设置程序初始状态的代码(画布大小、刷新频率、色彩模式) // 创建画布 createCanvas(600 , 600);// 自定义图形绘制开始 beginShape();endShape();margin : 0;// 设置程序初始状态的代码(画布大小、刷新频率、色彩模式) // 创建画布 createCanvas(600 , 600);

mantou_riji的博客 998

geom: JavaScript二维几何体处理库的实战应用

在现代网页和应用程序开发中,二维几何体处理技术在图形用户界面、游戏开发、动画以及位置数据可视化等方面扮演着重要的角色。JavaScript作为Web开发的主要语言,其在处理二维几何体方面的能力不可小觑。本章节将为读者提供二维几何体处理的概览,涵盖JavaScript中实现二维几何体处理的基础知识、常用算法以及处理流程。geom库提供了丰富的API来进行点、线、面的几何操作。以下是一些核心API的介绍:: 创建一个点对象。: 创建一条线段对象。: 创建一个多边形对象。

weixin_36151775的博客 875

Three.js基础入门:创建三维场景与动画

Three.js是一个轻量级的3D库,它通过WebGL进行硬件加速,用于在网页中渲染3D图形。它极大地简化了3D编程的学习曲线,让开发者不必深入了解WebGL底层复杂的API,即可快速入门。场景(Scene)是Three.js中的核心概念,它充当所有对象的容器。场景默认是黑色的,没有光源,渲染器将渲染场景中的所有内容。相机(Camera)则是用来观察场景的。在Three.js中,存在多种相机类型,其中最常用的是(透视相机)和(正交相机)。

weixin_42613360的博客 1150

第三篇:几何体入门:内置几何体全解析

几何体是Three.js世界的基石,它们定义了3D物体的形状和结构。Three.js提供20+种内置几何体,从基础立方体到复杂多面体,覆盖90%的3D建模需求。本文将深入解析12种核心几何体,并通过Vue3实现交互式参数调节面板,助你掌握几何造型的核心技术。:1000个立方体,Draw Call从1000次降为1次。:Three.js中所有几何体最终都转换为。:最接近球体的多面体,常用于低模风格。:行星环、戒指、管道弯曲。:在动画循环外创建几何体。:地面、水面、公告板。:相同物体共享几何体。

我是 二川兄,对Web开发、GIS开发、3D模型、机器学习、面试技巧等方面都有一些涉猎~ 欢迎您加入技术交流圈!你可以在我的文章末尾找到我~ 1188

JavaScript 创意编程程式库p5.min.js

p5.min.js

p5.js 从零开始创建 3D 模型,createModel入门指南

用于从一个OBJ或STL格式的字符串中加载 3D 模型,并返回一个对象。它适用于已经以文本形式(例如通过读取文件后拼接的字符串)拿到模型数据的场景。为什么要用?当你想在运行时动态获取模型(比如用户上传、通过网络接口拿到纯文本 OBJ/STL)并立即生成几何体时,十分方便。如果只是从本地或服务器文件直接加载,更常用的是,它会返回同样的。

weixin_39415598的博客 721

前端项目-p5.js.zip

前端项目-p5.js,p5.js是一个JavaScript客户端库,基于处理的核心原则,使用Canvas和HTML5创建图形和交互体验。

UDS $27服务DLL文件生成

UDS 27算法 DLL文件生成

hkj8808的博客 1282

学习threejs,从高级几何体创建THREE.POINTS,高级几何体离子化

本文详细介绍如何基于threejs在三维场景中实现高级几何体离子化,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 1422

华为EC6108V9E刷机实战:从U盘准备到开机优化的完整避坑指南

本文提供华为悦盒EC6108V9E刷机与优化的完整实战指南。针对搭载RK3228芯片和安卓4.4.4系统的设备,从型号确认、固件选择、U盘准备,到详细刷机步骤、常见故障排除,以及刷机后的深度性能优化,手把手帮助用户规避风险,让旧盒子焕发新生,成为流畅的全能媒体中心。

weixin_29324401的博客 1191

用three.js绘制一个坐标系

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="../js/three.js"></script> </head...

a123132123的博客 705

CoDeSys系列-3、Windows运行时软PLC主站和p-net从站IO设备组网测试

前面CODESY下载安装并熟悉了,p-net搭建从站也已经跑在虚拟机树莓派上了,我们只需要快速搭建一个profinet主站来和从站进行交互即可,这里我们直接用Windows下带的软PLC搭建profinet主站并和p-net的demo从站程序进行IO交互。评估是否进行Windows下的运行时PLC前先看一下注意事项,Windows下安装配置会需要修改boot及防火墙等,可能会影响Windows电脑的正常使用,所以创建项目时的设备可以选择非RTE的。

逍遥游的博客 7313

突破III-V/硅混合集成的挑战:UTC光电探测器能带工程仿真实践

本文探讨了UTC光电探测器在III-V/硅混合集成中的能带工程仿真实践,通过Ansys Lumerical平台实现多物理场仿真,解决晶格失配和能带不连续性等关键挑战。文章详细介绍了FDTD光学仿真和CHARGE电学仿真方法,优化器件性能,提升响应度和带宽,为高速光通信和量子计算提供技术支持。

weixin_29219539的博客 295

雪梨小白的“码绘”日常——p5.js自画像来喽!

这次需要完成互动媒体课程的第二项作业——利用p5.js绘制一幅表现自我的自画像,(雪梨是谁啊,那可是艺工交融的代表,骄傲的抬起快要睁不开的眼…),用三个字,那就是!!!我可以!!!(来啦!) 我觉得码绘是一件既需要灵感,同样也需要耐心与逻辑的事情,这也是为什么,我们把它称为艺工交融的代表,我的很多同学都提前完成了这次作业,而我一直压着没做,(除了我没救的拖延症之外),我始终没有找到合适的风格和美工...

FShirley的博客 993

实战解析:利用Python requests库高效抓取京东商品评论并构建结构化数据集

本文详细介绍了如何利用Python requests库高效抓取京东商品评论并构建结构化数据集。通过分析京东评论接口、处理反爬机制以及数据解析存储,帮助开发者快速获取电商数据,适用于竞品监控、用户画像构建等商业场景。

weixin_42526415的博客 837

用p5.js实现斐波那契螺旋:生成算法松果的完整指南

在计算机图形学和生成艺术领域,算法生成自然形态是一个经典课题。其核心原理是利用数学公式模拟自然界中的生长规律,例如斐波那契数列和黄金角。这项技术的价值在于,它能将抽象的数学之美转化为具体的视觉形态,为数字艺术、游戏资产创建和科学可视化提供高效、可编程的解决方案。在实践层面,开发者常借助Processing或p5.js等创意编程框架,通过极坐标变换、3D几何变换等基础图形学技术,实现如植物叶片、种子排列等复杂图案的生成。本文聚焦于一个具体的应用场景——模拟松果的斐波那契螺旋结构,详细拆解了如何利用p5.js实

weixin_30444111的博客 274

人工智能训练师认证教程(5)使用MONAI进行医学影像分析的完整指南

本文介绍了使用MONAI框架进行医学影像分析的全流程。首先详细说明了环境搭建步骤,包括PyTorch和MONAI的安装配置。然后以肺部CT 3D分割为例,分步骤讲解了数据准备与预处理、3D UNet模型构建、训练配置(DiceLoss损失函数、Adam优化器等)以及训练验证循环的实现。文章还包含推理可视化方法和模型导出为ONNX格式的部署方案,并强调了医学影像分析中的数据格式适配、强度归一化、显存优化等关键注意事项。最后指出MONAI的医学专用组件可大幅简化开发流程,建议后续可探索SwinUNETR等进阶方

华为开发者布道师,天府英才计划,致力于大数据+AI 的应用创新,助力企业与个人AI创新赋能。 1208

【A2DP】规范精讲[1]: 深入解析A2DP协议的核心架构

在蓝牙技术发展的早期阶段,音频传输主要通过SCO(同步面向连接)链路实现,这种设计主要针对语音通信,音质有限且功能单一。随着人们对无线高质量音频需求的增长,​​Advanced Audio Distribution Profile (A2DP)​​ 应运而生,成为蓝牙音频传输的技术基石。

byte轻骑兵的技术小窝 1万+

用three.js制作一个旋转的正方体

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="../js/three.js"></script> &lt...

a123132123的博客 351

华为OD 面试手撕代码真题【岛屿的周长】

0代表水,1代表陆地,岛由陆地组成且岛内不允许有湖,让你求岛的周长。

MISAYAONE的博客 8417

利用P5.js创作自画像

利用P5.js创作自画像 上一篇博文运用P5.js创作了两幅动态图片,本篇博文将综合运用P5.js的函数,创作一幅以景表意的自画像。 先贴上gif: 说是自画像,实际上豹子和人物加起来才算是真正的自己。这只豹子来源于海明威的一部小说,这是一只固执的豹子,固执到不可言喻。它加上一个喜欢眺望的人,便成了自己。 功能: 打开网页,自动播放肖邦的《夜曲》; 鼠标移动,豹子的眼睛跟随; 人的眼睛一直在眨;...

AndreCrawley的博客 998

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

three.js 源码注释(七十七)extras/geometries/LatheGeometry.js

LatheGeometry类通过截面顶点数组(points)创建旋转几何体. 用法: var points = []; for ( var i = 0; i < 10; i ++ ) { points.push( new THREE.Vector3( Math.sin( i * 0.2 ) * 15 + 50, 0, ( i - 5 ) * 2 ) ); } var geometry = new THREE.LatheGeometry( points ); var mater

omni360的专栏 1715

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Three.js - 使用着色器材质绘制立方体(三十)

简介 着色器材质可以自定义几何体面的颜色。进一步学习后就会知道,three.js就是对GLSL语言进行了多方面的封装,下面我们就使用着色器语言来绘制一个正方体。 开始绘制 绘制一个有着色器材质的几何体 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>学习</title> </head> <body

小小的前端 1304

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: three.js 在 WebGL 绘制旋转的几何体
下一篇: python:music21 与 AI 结合应用探讨
belldeep
博客等级 码龄20年 1820粉丝 584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值