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

Threejs创建正多边体

        上一章节实现了球体的绘制,这节来绘制多面体,包括正多面体,平面中,每条边一样长组成的图形叫正多边形,这里每个面一样,叫正多面体。如上文一样,先要创建出基础的组件,包括场景,相机,灯光,渲染器。代码如下:

 initScene() {this.scene = new THREE.Scene();//创建一个Scene场景},initLight(){const light = new THREE.DirectionalLight(0xffffff, 1);//创建一个灯光this.scene.add(light)},initCamera(){//创建一个透视相机,视角为45度,宽高比为window窗口的宽高比,0.1为近面,10000为远面this.camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 10000);this.camera.position.set(50,50,50);//设置相机位置this.camera.lookAt(0,0,0);//设置相机位置},initRenderer(){//初始化渲染器this.renderer = new THREE.WebGLRenderer({ antialias: true });this.container = document.getElementById("container");//获取容器this.renderer.setSize(this.container.clientWidth, this.container.clientHeight);//设置渲染器的大小this.container.appendChild(this.renderer.domElement);//将渲染器添加到容器中this.renderer.setClearColor('#FFFFFF', 1.0);//设置背景颜色},initOrbitControls(){ //创建鼠标控制工具this.orbitControls = new OrbitControls(this.camera, this.renderer.domElement);//创建控制器},initAnimate() { //循环渲染requestAnimationFrame(this.initAnimate);this.renderer.render(this.scene, this.camera);},

首先绘制一个正四面体,正四面体可以想象得到就是一个三棱锥,只有每面是三角形才能四个面组成一个体。

TetrahedronGeometry的构造函数接受两个参数:

  • radius(半径):这个参数定义了四面体的外接球半径,它决定了四面体的整体大小
  • detail(细节级别):这个可选参数用于细分四面体的面,以增加几何形状的细节。默认值为 0,表示不进行细分。

代码如下:

    initTetrahedronGeometry(){ //四面缓冲几何体const geometry = new THREE.TetrahedronGeometry( 1 );const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );const dodecahedron = new THREE.Mesh( geometry, material );this.scene.add( dodecahedron );},

效果如下:

 

OctahedronGeometry(八面体几何)是 Three.js 中用于创建八面体模型的几何类。八面体是一种具有八个面的多面体,每个面都是等边三角形,TetrahedronGeometry的构造函数接受两个参数:

  • radius(半径):这个参数定义了四面体的外接球半径,它决定了四面体的整体大小
  • detail(细节级别):这个可选参数用于细分四面体的面,以增加几何形状的细节。默认值为 0,表示不进行细分。

代码如下:

initOctahedronGeometry(){  //八面缓冲几何体const geometry = new THREE.OctahedronGeometry( 1 );const material = new THREE.MeshBasicMaterial( {color: 0x00ff00,wireframe:true} );const dodecahedron = new THREE.Mesh( geometry, material );this.scene.add( dodecahedron );},

效果如下:

 

DodecahedronGeometry(十二面体几何)是 Three.js 中用于创建十二面体模型的几何类。十二面体是一种具有 12 个面的多面体,每个面都是正五边形。

  • radius(半径):确定十二面体的外接球半径,从而决定十二面体的整体大小。
  • detail(细分层级):可选参数,默认值为 0。它控制几何体的细分程度,当 detail 值大于 0 时,十二面体的每个面会被细分成更多的小三角形,增加几何形状的细节和复杂度。数值越大,细分程度越高。

代码如下:

    initDodecahedronGeometry(){  //十二面缓冲几何体const geometry = new THREE.DodecahedronGeometry( 1 );const material = new THREE.MeshBasicMaterial( {color: 0x00ff00,wireframe:true} );const dodecahedron = new THREE.Mesh( geometry, material );this.scene.add( dodecahedron );},

 效果如下:

 

IcosahedronGeometry(二十面体几何)是 Three.js 中的一个几何类,用于构建二十面体的几何形状。二十面体是一种具有 20 个等边三角形面的多面体。

  • radius(半径):这一参数定义了二十面体的外接球半径,它决定了二十面体的整体大小。
  • detail(细节层级):这是一个可选参数,默认值为 0。通过调整这个参数,可以对二十面体的每个面进行细分,以增加几何形状的细节。当 detail 为 1 时,每个面将被进一步细分成更小的三角形,从而使整个二十面体看起来更加复杂和精细。

代码如下:

    initIcosahedronGeometry(){ //二十面缓冲几何体const geometry = new THREE.IcosahedronGeometry( 1 );const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );const dodecahedron = new THREE.Mesh( geometry, material );this.scene.add( dodecahedron );},

效果如下:

相关文章:

Threejs创建正多边体

上一章节实现了球体的绘制,这节来绘制多面体,包括正多面体,平面中,每条边一样长组成的图形叫正多边形,这里每个面一样,叫正多面体。如上文一样,先要创建出基础的组件,包括场景&#…...

链表——单链表

题目描述 实现一个单链表,链表初始为空,支持三种操作: (1) 向链表头插入一个数; (2) 删除第 k 个插入的数后面的数; (3) 在第 k 个插入的数后插入一个数 现在要对该链表进行 M 次操作,进行完所有操作后&am…...

【YOLO学习】YOLOv5口罩检测实战

文章目录 1. 环境配置2. 下载代码3. 安装库3.1 安装pytorch3.2 安装其他库 4. 测试5. 数据标注6. 模型训练7. 界面可视化 1. 环境配置 1. 先参考其他文章安装 Anaconda 或者 Miniconda,我安装的是 Miniconda。 2. 更换国内源,以加快速度 。可以参考下面这…...

场景题1-设计redis的key和value的原则

在设计 Redis 的 key 和 value 时,遵循一些最佳实践和设计原则可以确保系统的性能、可扩展性和易维护性。以下是设计 Redis key 和 value 时的常见原则: 1.RedisKey的设计原则 1.1.简短有意义 1)Redis 是内存数据库,key 越短&am…...

Shell-使用函数

在 Shell 脚本中,函数是由一段代码定义的,可以被重复调用。Shell 函数的定义和调用相对简单,并且它支持参数传递和返回值。错误处理在 Shell 中也非常重要,通常通过检查返回的状态码来判断是否有错误发生。 1.Shell 函数的定义和…...

Git介绍--github/gitee/gitlab使用

一、Git的介绍 1.1、学习Git的原因:资源管理 1.2、SCM软件的介绍 软件配置管理(SCM)是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。 二、版本控制软件 …...

【ubuntu】【VirtualBox】VirtualBox无法加载USB移动设备的解决方法(支持U盘启动盘)

TOC 提示:测试可用 一、安装VirtualBox VirtualBox-7.1.2-164945-Win。 下载路径。 Download_Old_Builds_7_0 – Oracle VirtualBox 二、安装Oracle_VirtualBox_Extension_Pack-7.1.2 下载路径见上文。 三、安装增强功能 四、挂载USB 4.1 设置USB协议 4.2 挂…...

Koa2+mongodb项目实战1(项目搭建)

前言 在正式开始之前,需要先知道用到的东西: koa:Koa 是一个基于 Node.js 的 Web 应用框架,非常适合开发API服务,可以与前端框架(如 Vue.js、React.js)结合使用,实现前后端分离的开…...

Pyhton爬虫使用Selenium实现浏览器自动化操作抓取网页

第三方库Selenium主要是用来抓取动态生成的网页数据,有些网站的内容要下拉网页才会动态加载,特别是那些使用javaScript渲染的内容。当然Selenium还可用于自动化浏览器操作,比如编写一个自动抢火车票的python脚本,这并不难实现。接…...

矩阵学习过程中的一些思考

2024.09.27(学习鸢尾花书_矩阵力量_Ch20) (1)所有中心过原点的椭圆都可以用一个二维矩阵表示,且特征值表示长短轴长度,特征向量表示长短轴所在方向的单位向量(表征椭圆旋转方向)&am…...

初识Django

前言: 各位观众老爷们好,最近几个月都没怎么更新,主要是最近的事情太多了,我也在继续学习Django框架,之前还参加了一些比赛,现在我会开始持续更新Django的学习,这个过程会比较久,我会把我学习的…...

VirtualBox虚拟机连接宿主机并能够上网(小白向)

现存问题 windows系统主要使用vmare和virtualbox两种虚拟机,virtualbox相对于vmare更加轻便,但少有博客能够详细说明使用virtualbox的教程。踩了网上的坑后,决定写一篇文章介绍virtualbox虚拟机上网的流程。 需求 1. virtualbox虚拟机与宿主机…...

深度学习每周学习总结J1(ResNet-50算法实战与解析 - 鸟类识别)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 目录 0. 总结1. 设置GPU2. 导入数据及处理部分3. 划分数据集4. 模型构建部分5. 设置超参数:定义损失函数,学习率&a…...

商家营销工具架构升级总结

今年以来,商家营销工具业务需求井喷,需求数量多且耗时都比较长,技术侧面临很大的压力。因此这篇文章主要讨论营销工具前端要如何应对这样大规模的业务需求。 问题拆解 我们核心面对的问题主要如下: 1. 人力有限 我们除了要支撑存量…...

移动硬盘无法读取:问题解析与高效数据恢复实战

一、移动硬盘无法读取的困扰 在数字化时代,移动硬盘作为数据存储和传输的重要媒介,承载着大量珍贵的数据资源。然而,当移动硬盘突然无法读取时,我们往往会陷入深深的困扰之中。这种无法读取的现象可能表现为插入电脑后毫无反应、…...

20241005给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Android12时使用iperf3测网速

20241005给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Android12时使用iperf3测网速 2024/10/5 14:06 对于荣品RD-RK3588-AHD开发板,eth1位置上的PCIE转RJ458的以太网卡是默认好用的! PCIE TO RJ45:RTL8111HS 被识别成为eth0了。inet addr:192.…...

node配置swagger

安装swagger npm install swagger-jsdoc swagger-ui-express 创建 swagger.js 配置文件 ​ const path require(path); const express require(express); const swaggerUI require(swagger-ui-express); const swaggerJsDoc require(swagger-jsdoc); // 修改 swaggerDoc…...

MATLAB plot画线的颜色 形状

文章目录 前言一、MATLAB plot画线的颜色 形状?颜色选项标记选项示例代码详细说明 总结 前言 提示:这里可以添加本文要记录的大概内容: 项目需要: 提示:以下是本篇文章正文内容,下面案例可供参考 一、MA…...

Goland使用SSH远程Linux进行断点调试 (兼容私有库)

① 前置需求 ssh远程的 Linux 服务器必须安装 高于本地的 Go推荐golang 安装方式使用 apt yum snap 等系统自管理方式,(要安装最新版本的可以找找第三方源),如无特殊需求不要自行编译安装golang ② Goland设置 2.1、设置项处理…...

LLM | Ollama WebUI 安装使用(pip 版)

Open WebUI (Formerly Ollama WebUI) 也可以通过 docker 来安装使用 1. 详细步骤 1.1 安装 Open WebUI # 官方建议使用 python3.11(2024.09.27),conda 的使用参考其他文章 conda create -n open-webui python3.11 conda activate open-web…...

Java程序员6年焦虑,转行AI后薪资暴涨40%!这8个岗位,普通人也能入局?年薪百万不是梦!

文章讲述了一位Java程序员老周因对纯业务开发感到焦虑,于去年3月开始系统学习AI相关技术,并于去年7月成功跳槽至AI创业公司,薪资涨幅达40%。文章分析了2026年AI相关岗位的招聘趋势,指出AI岗位需求旺盛,但需要程序员具备…...

探索Pem电解槽三维仿真模型:聚焦氢气扩散

Pem电解槽三维仿真模型,阴极不通水,只考虑氢气的扩散,使用二次电流分布浓物质传递自由与多孔介质流,不使用水电解槽节点。最近在研究Pem电解槽的三维仿真模型,这里面有个挺有意思的设定,阴极不通水&#xf…...

解锁7大加密场景:Cryptii离线工具全攻略

解锁7大加密场景:Cryptii离线工具全攻略 【免费下载链接】cryptii Web app and framework offering modular conversion, encoding and encryption 项目地址: https://gitcode.com/gh_mirrors/cr/cryptii 在数字化时代,数据安全与格式转换成为开发…...

1998-2025年区县政府工作报告文本数据

县域政府工作报告是县级政府向同级人民代表大会汇报年度工作的核心文件,报告既总结上一年度经济社会发展和政府工作成效,也提出当前形势判断、政策取向及下一阶段重点任务,是集中反映政府施政理念、政策重点和发展方向的重要文本 整理了1998…...

HunyuanVideo-Foley与Java后端集成:构建高并发音效生成服务

HunyuanVideo-Foley与Java后端集成:构建高并发音效生成服务 1. 场景需求与技术挑战 在线教育平台面临一个共同痛点:海量视频课程需要配乐,但人工配乐成本高、效率低。一个中等规模的平台每月新增课程可能达到上万节,传统音乐制作…...

OpenClaw性能调优:ollama-QwQ-32B模型批处理与缓存机制实战

OpenClaw性能调优:ollama-QwQ-32B模型批处理与缓存机制实战 1. 为什么需要性能调优? 上周我遇到了一个棘手的问题:需要让OpenClaw自动处理100份PDF文档的摘要生成任务。本以为只是简单的批量调用模型,结果发现处理速度慢得惊人—…...

【经验贴】考过CDA数据分析师二级,从互联网公司转行大型国企下的数据分析统计部门经验

一、个人经历 2015年进了一家互联网公司,经过这几年的快速发展,到2020年的时候,我已经混到总监了。产品、运营、销售支持,这三方面的活都干过。也算是赶上了这波红利的尾巴,这些年也挣了点钱。 2020年后,…...

比迪丽WebUI保姆级教程:从服务器IP获取到首张图生成全过程

比迪丽WebUI保姆级教程:从服务器IP获取到首张图生成全过程 1. 前言:为什么选择比迪丽WebUI? 如果你对《龙珠》里的比迪丽(Videl)这个角色情有独钟,想用AI画出她的各种形象,那么今天这个教程就…...

为什么92%的Spring Cloud Function项目仍在忍受秒级冷启动?这4个被忽视的Classloader陷阱必须立即修复

第一章:冷启动问题的云原生本质与量化归因冷启动并非单纯的应用延迟现象,而是云原生架构中资源按需供给、隔离边界强化与运行时环境动态构建三者耦合引发的系统性效应。其本质在于容器编排层(如 Kubernetes)与函数计算平台&#x…...

建筑工地AI监控避坑指南:YOLOv11+PyQt5开发中的7个常见错误

建筑工地AI监控避坑指南:YOLOv11PyQt5开发中的7个常见错误 在建筑工地安全监控领域,AI技术的应用正从概念验证走向规模化落地。YOLOv11作为目标检测领域的新锐算法,配合PyQt5的灵活界面开发能力,确实能构建出高效的安全预警系统。…...