news 2026/10/22 21:00:04

ThreeJS-3D可视化y轴和z轴

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ThreeJS-3D可视化y轴和z轴

ThreeJS-3D可视化y轴和z轴

本博客地址:https://gitee.com/enzoism/html_threejs_demo1

1-3D坐标绘制

参考博客地址:https://blog.csdn.net/2301_77717148/article/details/168559364

)


2-为什么代码中要把y和z轴进行调换

1-先回答下面的问题

肯定不是上坡,你肯定认为我是在变化x和y轴,而不是在变化z轴


2-为了保持x(人的直观感受)同时,体现y的变化,就把y和z替换

1-const pts = t.points.map(([x, z, y]) => new THREE.Vector3(x, y ?? 0, z));

2-也就是说此时图把z轴拍扁了,我们此时看不出z的高度

3-所以你不认为我在上升的z轴,展示的就是y轴的数据

import*asTHREEfrom"./three.module.js";// —— 与原 JS 完全相同的采样逻辑 ——const{tracks}=await(awaitfetch("./assets/tracks.json")).json();constt=tracks.find((x)=>x.name==="Summer 1");if(!t)thrownewError("Summer 1 not found in tracks.json");constpts=t.points.map(([x,z,y])=>newTHREE.Vector3(x,y??0,z));constcurve=newTHREE.CatmullRomCurve3(pts,true,"catmullrom",0.5);constS=720;constsamples=Array.from({length:S},(_,i)=>curve.getPointAt(i/S));// —— 渲染(俯视 2D)——constW=1024,H=1024;constrenderer=newTHREE.WebGLRenderer({antialias:true,preserveDrawingBuffer:true});renderer.setSize(W,H);document.getElementById("view").appendChild(renderer.domElement);constscene=newTHREE.Scene();scene.background=newTHREE.Color(0x181818);// 用采样点算包围盒,自动取景constbbox=newTHREE.Box3().setFromPoints(samples);constcenter=bbox.getCenter(newTHREE.Vector3());constradius=bbox.getSize(newTHREE.Vector3()).length()/2;constcamera=newTHREE.OrthographicCamera(-radius,radius,radius,-radius,0.1,1000);camera.position.set(center.x,200,center.z);// 从正上方俯视camera.up.set(0,0,-1);camera.lookAt(center);// 中心线(蓝色)+ 原始控制点(红色圆点)constlineGeo=newTHREE.BufferGeometry().setFromPoints(samples);scene.add(newTHREE.LineLoop(lineGeo,newTHREE.LineBasicMaterial({color:0x4fc3f7})));constdotGeo=newTHREE.BufferGeometry().setFromPoints(pts);scene.add(newTHREE.Points(dotGeo,newTHREE.PointsMaterial({color:0xef5350,size:4})));renderer.render(scene,camera);// —— 导出 PNG ——window.savePNG=()=>{consta=document.createElement("a");a.href=renderer.domElement.toDataURL("image/png");a.download="summer1_centerline.png";a.click();};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 21:00:02

C++补充(二)--包装器:std::function 与 std::bind

前言前面我们学习了 lambda 表达式&#xff0c;lambda 本质是编译器自动生成的仿函数&#xff0c;属于可调用对象。C 里面可调用对象种类很多&#xff1a;普通函数、函数指针、仿函数、lambda、类成员函数。它们类型各不相同&#xff0c;直接统一管理很麻烦。C11 在 <functi…

作者头像 李华
网站建设 2026/10/22 20:57:11

实拍+AIGC双轨的虚实融合:一条跨国宣传片的工程化交付

2026 年&#xff0c;AI 视频的一个清晰趋势是虚实融合——不再纠结"AI 能不能全部替代实拍"&#xff0c;而是判断"什么必须真实拍、什么用 AI 更快更好"。 这个趋势已经被数据验证&#xff1a;据行业观察&#xff0c;2026 年上半年已有多条"真人实拍为…

作者头像 李华
网站建设 2026/10/22 20:32:06

Bible Strong Avatar Lab 用户指南:用 3D 风格几何原语搭建你的角色身体

【免费下载链接】bible-strong-avatar-lab 项目地址&#xff1a; https://gitcode.com/gh_mirrors/bib/bible-strong-avatar-lab 点击查看 免费下载 Bible Strong Avatar Lab 是一款基于浏览器的程序化头像创作工作室。本指南面向新手&#xff0c;教你用 3D 风格几何原语快速搭…

作者头像 李华
网站建设 2026/10/22 20:29:33

PJ85718DM与PIC18LF47K40双通道温度采集方案实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/22 20:29:12

UML多重度与GRASP:从类图到交互图的建模要点解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/22 20:29:12

STM32与PJ85718DM协作:HVAC本地远程双路温度采集方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华