新版组件库3D数模功能模块接入与性能优化指南 新版组件库里突然冒出一个“3D数模功能模块”时很多前端同学的第一反应是这不就是刚开始卷一套 Three.js 封装吗结论是看谁来做。如果只是把canvas包进组件里那不值一提如果把它做成“开箱即用的数字样机查看器”能加载 GLTF/GLB、能做模型树、剖切、测量、爆炸图、批注并且跟现有组件库的主题规范打通那就值得认真看看了。这篇文章就以“新版组件库 3D 数模功能模块”为主题不绑定某一个具体开源库而是从工程化接入视角拆解这类模块的通用设计核心能力、环境准备、安装接入、功能验证、接口与批量任务、资源占用与性能优化、常见问题排查和工程落地建议。无论你接的是 galaxy 组件库、wot design uni 组件库还是团队自研组件库里新上的“DMU/3D 数模”模块这套思路都能用。先说结论这类模块的门槛不高核心是浏览器 WebGL 支持和模型资产准备。接下来会按“规格速览 → 环境准备 → 安装接入 → 功能测试 → 接口与批量 → 性能观察 → 排错 → 最佳实践”的顺序展开。前端开发、三维可视化、数字孪生、工业软件产品流程相关同学可以直接对照文章操作。1. 3D数模功能模块核心能力速览在动手接入之前先把这类模块通常提供的核心能力列清楚。实际项目中组件库版本不同、技术栈不同能力边界会有差异但“3D数模/DMU 浏览”类模块基本不会跑出下面这套框架能力项常见说明模块类型组件库中的业务型高阶组件一般命名类似dmu-viewer、ModelViewer、Model3D渲染能力基于 WebGL工程上常由 Three.js、Babylon.js 或 model-viewer 等渲染内核支撑支持格式常见 GLTF/GLB、OBJ、STL、FBXSTEP/IGES 等 CAD 格式需先转换为轻量化网格格式核心功能旋转/平移/缩放、视图重置、模型树、显隐控制、爆炸图、剖切、测量、标注、截图、加载进度部署方式npm 安装、按需引入、组件库全局注册uni-app 场景支持 easycom 自动引入运行环境现代浏览器需支持 WebGL桌面端建议独立显卡移动端建议测试机为近两年中高端机型是否支持 API/批量通常支持通过组件方法或事件驱动方式动态切换模型可由业务层封装批量预览任务是否支持私有化模型资源可部署在私有对象存储/CDN满足数据不出内网要求适合场景产品评审、工艺发布、维修指导、在线展厅、数字孪生、供应商协同这里需要强调一点不要看到“3D 数模”就以为它等于 CAD 软件。这类前端组件模块做的是“轻量化浏览和协同评审”不负责建模也不适合做高精度有限元或复杂仿真计算。它的价值是把原来必须在桌面软件里打开的三维数字样机搬到浏览器和移动端让业务人员、评审人员零安装参与协作。2. 3D数模功能模块适用场景与使用边界2.1 适合谁来用从团队分工看最直接受益的是两类人。第一类是前端业务开发。过去要做一个三维模型展示页面需要自己搭 Three.js 场景、管理相机、灯光、Resize、渲染循环、模型加载、交互事件工程量很大。有了组件库的三维数模模块只需要传入模型地址、绑定事件、调用几个方法就能交付一个可用页面。第二类是产品、设计、工艺、仿真等业务角色。他们不关心组件内部怎么渲染只关心能不能把数模传上来、能不能剖切看内部结构、能不能测量孔距、能不能截图下发评审意见。这类模块把专业 CAD 查看器的常见操作复制到了 Web 端学习成本低数据又不需要下载安装软件。2.2 能解决什么问题设计评审从“会议室投影 桌面软件”变成“网页链接 浏览器远程评审”。工艺发布、维修指导可以嵌入 3D 爆炸图替代大量纸质二维视图。在线展厅、投标演示可以直接把 3D 数模作为核心内容放在页面上。数字孪生场景里把设备数模与实时传感数据绑定实现三维化监控。2.3 不适合什么场景需要构建原始 CAD 特征树、修改参数化模型的场景不适合用前端数模浏览组件。高精度剖面计算、有限元分析、动力学仿真应交给专业 CAD/CAE 软件前端模块只能做结果展示。超大装配体例如整船、整厂级数模零件数量百万级直接渲染很容易卡死需要先做模型轻量化和分块加载设计。2.4 数据使用边界与合规提醒接入 3D 数模模块时必须确认模型文件来源合法。如果模型来自供应商、客户或内部设计团队需要明确授权范围和保密等级。涉密型号、未公开产品、关键工艺参数相关数模建议走私有化部署模型文件和预览服务都不能出内网。对外展示前还需要对模型做脱敏处理比如隐藏内部结构、压缩精度、去掉敏感标注。内容发布和商用前建议由业务方复核确认避免把受版权保护的模型直接挂到公网。3. 3D数模功能模块环境准备与前置条件接入之前先花十分钟检查环境。不要急着写代码先把下面这张清单过一遍能避免后面一半的报错。3.1 浏览器与 GPU 基础要求浏览器Chrome、Edge 90 以上Firefox 和 Safari 当前稳定版。需要完整支持 WebGL2。可以在浏览器地址栏访问chrome://gpu查看“WebGL”和“Graphics Feature Status”是否为绿色可用状态。GPU独立显卡体验最好集成显卡可以跑但大模型容易卡顿。移动端优先测试 iPhone 12 之后或近两年 Android 中高端机型。操作系统Windows、macOS、Linux 均可与操作系统关系不大重点看浏览器 WebGL 和显卡驱动。3.2 前端工程环境Node.js 16 或 18/20 LTS 版本建议统一用 LTS。包管理器npm、pnpm 或 yarn团队统一一种即可。项目技术栈Vue2/Vue3、React 或 uni-app 都可以。组件库如果提供多端适配接入方式会略有差异后面章节单独说明。如果项目里已经安装过 three.js 之类的渲染依赖接入前先确认版本是否与组件库要求的渲染内核版本冲突。3.3 模型资产准备准备一个可用的测试模型优先使用gltf或glb格式的简单模型几何体数量不要太大。如果测试模型是 OBJ/STL同样可以但要注意 OBJ 是否包含 MTL 材质文件纹理贴图路径是否和 OBJ 在同一目录或正确引用。不要一上来就传 STEP/IGES 原始 CAD 格式。这类格式组件库通常不直接支持需要先用转换工具轻量化成网格模型。3.4 服务端和网络模型资源建议放在支持 CORS 的静态服务器、对象存储或 CDN 上。直接放在本地磁盘用file://打开页面时模型加载大概率被浏览器拦截这是最常见的跨域问题。内网私有化部署时需要模型文件与前端站点同域或者在对象存储上配置允许跨域访问。大模型建议走 CDN 并按需加载避免首屏直接把基础文档页卡住。4. 3D数模功能模块安装部署与接入方式4.1 安装组件以 npm 包形式安装命令和其他前端组件库一致。下面是通用示例实际包名需要替换为组件库文档中的正式包名# 使用 npm npm install galaxy-ui # 使用 pnpm内核依赖会一起安装 pnpm add galaxy-ui如果使用的是 uni-app 生态组件库例如 wot design uni 这类方案同样以 npm 安装后借助 easycom 自动引入可以省去手动注册npm install wot-design-uni安装完成后检查一下package.json中是否新增了对应依赖并确认没有打印 peer dependency 冲突。如果操作安装时报错可以参考后面“常见问题排查”一节。4.2 Vue3 中全局注册在main.js里引入组件库和 3D 数模组件import { createApp } from vue import App from ./App.vue import GalaxyUI from galaxy-ui import galaxy-ui/dist/index.css const app createApp(App) app.use(GalaxyUI) app.mount(#app)如果团队项目更倾向按需引入在页面里直接引入组件template dmu-viewer :modelmodelUrl height600px loadedonModelLoaded erroronModelError / /template script setup import { ref } from vue // 按需引入 3D 数模组件路径以实际组件为准 import { DmuViewer } from galaxy-ui const modelUrl ref(/models/demo.glb) function onModelLoaded(payload) { console.log(模型加载完成, payload) } function onModelError(error) { console.error(模型加载失败, error) } /script4.3 uni-app 中通过 easycom 引入uni-app 项目推荐直接用 easycom 机制不需要手动注册。只要组件满足components/组件名/组件名.vue或者 npm 包中声明了 easycom 规则页面模板里直接写标签即可template view dmu-viewer :modelmodelUrl height600px auto-resize loadedonModelLoaded / /view /template script setup import { ref } from vue const modelUrl ref(/static/models/demo.glb) function onModelLoaded(e) { console.log(uni-app 中模型加载完成, e) } /script4.4 验证是否接入成功把上面的页面跑起来后用浏览器开发者工具查看是否有模型文件网络请求。如果网络请求返回 200 并且页面出现三维模型说明接入成功。判断标准如下页面出现三维模型可用鼠标拖拽旋转。浏览器 Network 面板中出现.glb或.gltf及相关纹理资源请求。控制台无 WebGL 报错、无跨域 CORS 报错。如果出现空白画布优先检查跨域、模型路径和 WebGL 支持三个点。5. 3D数模功能模块功能测试与效果验证接入只是第一步更关键的是把功能模块里的常见能力逐项验证一遍。下面按工程上最常用的功能维度拆解。每一小节都给“测试目的、操作步骤、预期结果、失败排查”方便直接对表测试。5.1 基础模型加载测试目的验证 3D 数模组件能正常加载并渲染模型。操作步骤传入一个 GLB 模型地址等待加载完成后观察模型是否出现在画布中。预期结果加载过程显示进度条或百分比完成后模型正常显示材质和纹理颜色正确。失败排查确认模型路径可访问确认服务器返回Access-Control-Allow-Origin相关响应头确认模型文件没有损坏。5.2 视角操作与视图重置测试目的验证旋转、平移、缩放等基础交互。操作步骤鼠标左键拖拽旋转、中键或右键平移、滚轮缩放点击“视图重置”按钮。预期结果模型跟随鼠标操作缩放流畅不撕裂重置后回到初始视角。失败排查如果交互没反应检查组件是否注册了鼠标事件如果页面出现闪烁检查 WebGL 上下文是否在页面销毁后未正确释放。5.3 模型树与零件显隐控制测试目的验证装配体结构树的展开与零件显隐。操作步骤打开模型树面板展开总成节点勾选某个子零件将其隐藏后再次显示。预期结果树节点与模型零部件一一对应隐藏零件后模型相应部分消失但不影响其他零件。失败排查如果树节点无法展开通常是模型本身没有层级结构或者导出时丢失了节点名需要回原模型重新导出。5.4 爆炸图动画测试目的验证爆炸图动效和复位。操作步骤点击“爆炸图”按钮观察零件是否按轴向或径向分离点击“复位”观察是否合拢。预期结果零件按设定方向平滑分离动画过程不卡死复位准确。失败排查爆炸方向不对一般是模型原点或爆炸向量参数设置问题无动画则检查动画帧循环是否被外部暂停。5.5 剖切分析测试目的验证剖面显示内部结构。操作步骤启用剖切模式添加一个剖切平面平移或旋转剖切面观察内部结构。预期结果被剖切到的部位以半透明或剖切面颜色显示内部结构可见。失败排查剖切无效果先检查模型是否为多个独立 mesh并确认材质是否支持 clipping。单材质多 Geometry 的模型也可以剖切但部分着色器需要额外配置。5.6 测量与标注测试目的验证距离、角度测量和标注功能。操作步骤在模型上拾取两个点测量距离添加文字或箭头标注保存标注快照。预期结果测量结果显示在模型上单位与业务配置一致标注位置可随视角联动。失败排查拾取不准时检查拾取射线是否经过物体且开启了深度测试测量单位错误时检查模型导入比例和组件默认单位配置。5.7 截图与批注导出测试目的验证用户能否把当前视图截图并用于评审反馈。操作步骤调整视角到目标位置点击“截图”生成 PNG 或 JPG并支持本地下载或上传。预期结果截图内容与画布当前显示一致分辨率可以达到业务要求水印和批注可按配置合成。失败排查截图空白一般是 WebGL 画布 preserveDrawingBuffer 未开启截图模糊则检查导出时缩放比例。6. 3D数模功能模块接口 API 与批量任务组件库里的 3D 数模模块一般不只是被动显示还应该支持业务层通过方法调用和事件监听来完成交互闭环。下面给出一套通用设计范式具体方法名和参数以实际接入组件库的文档为准。6.1 常用事件事件名触发时机常见用途loaded模型加载完成后隐藏加载动画输出模型信息progress模型加载过程中更新进度条error模型加载或渲染出错时展示错误兜底页面select点击选中零部件时联动业务侧信息面板viewChange相机视角发生变化时上报浏览轨迹恢复视角6.2 调用方法示例通过模板ref获取组件实例后可以调用内部方法。下面是通用示例template div dmu-viewer refviewerRef :modelmodelUrl height600px loadedonLoaded / button clickresetView重置视角/button button clickexplode爆炸图/button button clicksnapshot截图/button /div /template script setup import { ref } from vue const viewerRef ref(null) function resetView() { // 重置视角方法以实际组件为准 viewerRef.value?.resetCamera() } function explode() { // 爆炸图开关常见参数 includeSubtree 表示是否影响子节点 viewerRef.value?.setExploded(true, { direction: [0, 1, 0], distance: 80 }) } function snapshot() { viewerRef.value?.captureSnapshot({ type: png, width: 1920, height: 1080 }) .then((blob) { console.log(截图成功, blob) // 这里可以继续把 blob 上传到业务服务 }) } /script6.3 批量预览任务设计在真实业务中一个 SKU 有几十个模型需要批量查看。做法是用数组驱动组件切换模型地址const modelList [ { id: SKU-001, name: 产品A, url: /models/product-a.glb }, { id: SKU-002, name: 产品B, url: /models/product-b.glb } ] let currentIndex 0 async function loadNext() { if (currentIndex modelList.length) { console.log(全部预览完成) return } const item modelList[currentIndex] viewerRef.value?.loadModel(item.url, { autoResetCamera: true }) currentIndex }批量任务的关键是加“状态机”和“错误兜底”加载成功记录一条加载失败跳过并记录错误原因任务全部结束后输出汇总结果。不要用setTimeout去猜加载时间应该监听loaded和error事件来判断是否进入下一个任务。6.4 模型格式转换管线现场拿到的模型经常是 STEP、IGES 这类 CAD 格式不能直接给浏览器用。团队内部可以搭一条轻量化转换管线用转换服务或桌面工具把 STEP/IGES 转为带网格的中间格式。再转成 GLB 或优化后的 GLTF并应用 Draco 压缩。将最终模型上传到对象存储或 CDN生成版本号路径。前端组件加载最新版本模型。转换命令没有统一标准下面只是示意结构# 示例调用内部转换服务接口实际实现可由后端任务队列处理 curl -X POST https://convert.example.com/api/convert \ -d { source: s3://input/product.step, target: glb, outputPrefix: output/product, options: { draco: true, flatten: true, unit: mm } }这种转换任务通常耗时较长适合做成异步任务提交转换请求后轮询任务状态完成后回调通知前端刷新模型列表。6.5 批量截图/走查如果要为每个模型生成封面图可以写一个无头浏览器脚本定时加载模型列表并截图。同样需要注意等待模型加载完成而不是靠固定延迟# 示例批量截图脚本伪代码流程 # 1. 读取模型清单 # 2. 逐个打开预览页面 # 3. 监听 loaded 事件 # 4. 调用组件截图方法 # 5. 上传截图到对象存储7. 3D数模功能模块资源占用与性能观察很多同学接入这类模块后遇到最多的问题是“页面有点卡”“显存占用有点高”。这里不给任何人拍一个固定数字因为模型复杂度、浏览器、显卡差异太大。下面给出观察方法和优化思路。7.1 怎么观察资源占用打开浏览器开发者工具的 Performance 面板录制一段旋转、缩放操作观察 FPS 和 P75/P95 帧时长。在任务管理器或系统性能监视器里看 GPU 占用和内存占用。Windows 任务管理器右下角切换到 GPU 图表可以观察 3D 引擎的实时占用。在页面脚本里调用gl.getParameter查询 WebGL 内存信息或者直接使用 Three.js 的内存统计接口查看几何体、纹理、显存占用。移动端用 Flutter 类似的性能工具或 WebView 调试工具截图 FPS 曲线。7.2 影响性能的关键因素模型顶点数和三角面数这是最大的瓶颈。一个模型几十万面在高端台式机上问题不大在移动端很容易变成播放幻灯片。纹理贴图数量和尺寸2K、4K 贴图很占显存移动端建议贴图最大 2048能用压缩纹理就用 KTX2。材质数量和不透明/透明穿插大量透明材质会增加排序开销。Draw Call 数量一个零件一个独立 Mesh 又都带独立材质时Draw Call 会非常高渲染线程压力大。光照和阴影实时阴影非常贵移动端建议关闭或只保留方向光阴影。设备本身核显和独显、手机老和新差距非常明显。7.3 性能优化手段优化方向做法模型轻量化在导出端三角面简化去掉内部不可见零件设置 LOD顶点压缩使用 Draco 压缩 GLB减小模型体积和解析时间纹理优化压缩纹理格式 KTX2/Basis Universal控制贴图最大尺寸合批与实例化相同材质的零件合并 Geometry大量重复零件用 InstancedMesh渲染设置按设备能力选择像素比限制 shadow map 尺寸显存控制切换模型时主动释放旧模型几何体、纹理、renderer 资源加载优化大模型拆分成多个文件按需加载或配置进度分块显存不足时常见现象是模型加载到一半页面白屏、浏览器标签页变黑或直接报“Out of Memory”。遇到这类问题先不要调业务代码先把模型体积降下来再打开 GPU 占用观察工具确认占用是否回落。8. 3D数模功能模块常见问题与排查方法从接入到上线最容易踩的坑基本集中在下表这十类。建议先收藏遇到问题直接对表排查。问题现象可能原因排查方式解决方案页面空白模型不显示模型路径错误或跨域被拦截打开 Network 面板看模型请求状态修正路径在服务端配置 CORS模型加载几十秒没反应模型文件太大或网络太慢看 Network 面板传输时间看模型体积模型压缩、走 CDN、加加载进度和超时兜底控制台报 WebGL 相关错误浏览器关闭了硬件加速或显卡驱动问题访问chrome://gpu查看 WebGL 状态开启浏览器硬件加速更新显卡驱动使用file://打开页面加载模型失败浏览器不允许本地文件跨域读取换成本地静态服务或前端 dev server使用npm run dev或npx serve .启动静态服务模型有材质但显示全黑/全白材质着色器不支持当前光照环境或贴图路径丢失检查材质贴图是否加载成功使用与组件库匹配的 PBR 材质流程贴图改用相对路径打包树节点没有模型层级信息模型导出时丢失了场景层级或节点命名在 3D 建模软件里检查场景树重新导出时保留节点层级和命名规范点击零件无法选中拾取射线检测失败或组件未开启选中监听打开控制台看选中事件是否触发检查射线检测逻辑确认模型在相机近远裁剪面内剖切无效材质未开启 clipping或模型为多个子网格但未统一处理设置材质的 clipping 开关输出调试日志统一设置材质支持剖切必要时用后处理剖切方案截图全黑或为空白图WebGL 画布 preserveDrawingBuffer 未开启查看截图时 canvas 内容是否丢失开启 preserveDrawingBuffer或在渲染后立即截图切换模型后内存越来越高旧模型资源未释放renderer 上下文重复创建使用内存统计工具观察切换前后变化在loadModel前释放旧资源切换场景时 dispose 几何体和纹理9. 3D数模功能模块最佳实践与使用建议9.1 组件库层按需封装业务组件不要直接在业务页面里写一堆dmu-viewer的事件处理。建议再包一层项目级业务组件例如ProductModelReview.vue把模型加载、错误处理、评审按钮、批注状态、接口上报全部收敛起来。这样组件库升级时业务侧只改一个封装文件。9.2 资产层模型文件目录与版本管理建议的目录结构static/models/ product-a/ v1/ product-a.glb product-a.textures/ v2/ product-a.glb模型文件名带版本号便于回滚和灰度。不要把新模型直接覆盖旧文件否则线上页面可能瞬间断裂。9.3 加载体验骨架屏与错误兜底模型加载期间显示一个和画布同尺寸的骨架屏或加载动画加载失败时显示“模型暂不可用”的兜底卡片并提供“重试”按钮。这个细节直接影响评审页的专业感。9.4 权限与安全私有化部署和访问控制涉密数模模型资源不要放公网 CDN建议内网对象存储配合签名 URL 做临时访问。前端组件不要暴露模型原始下载地址可以通过后端代理转发避免模型被直接爬走。如果有水印需求在模型渲染层合成业务水印而不是依赖截图后处理。9.5 合规提醒模型版权与业务授权3D 模型文件往往包含设计团队的知识产权。无论是用于在线展厅、投标演示还是供应商协同都要确认参与方是否获得模型授权。对外发布前建议做一次模型内容复核去掉敏感尺寸标注、关键内部结构和未公开设计细节。9.6 协作流程评审意见结构化评审页面最好把视角和批注一起保存下来。用户截完图后自动把当前相机参数、选中零件 ID、批注文字提交到后端这样评审人再次打开时能恢复到同一个视角。这类功能比单纯的“看图”更有业务价值。10. 总结与下一步这次聊了新版组件库 3D 数模功能模块从接入到性能优化的完整链路。最值得先做的事情很清楚找一个小体积 GLB 模型把组件装好、注册好、页面上能拖拽旋转再把模型树和剖切验证一遍。跑通这三件事这个模块在你团队里就算基本可用了。最容易踩的坑有三个模型格式不对导致加载失败、模型资源跨域被拦、WebGL 环境异常导致画布空白。这三个问题集中在文章第 8 节建议排查时优先看 Network 面板和控制台。后续如果继续往深做可以考虑三个方向第一把模型加载和评审意见接口打通形成完整的在线评审闭环第二接入 AR/VR 能力让现场人员直接用手机看数模第三与数字孪生平台对接把实时传感器数据绑定到三维模型上让组件从“展示器”升级成“业务交互入口”。文章里给出的安装命令、组件方法和接口示例都是通用模板实际接入时记得以你所用组件库的正式文档为准。如果你正在做组件库选型也可以把“3D 数模功能模块”作为一项对比维度让厂商或开源团队演示指定模型的加载效果再决定是否采用。这样比只看功能清单可靠得多。

相关新闻

最新新闻

锂电极片毛刺视觉检测:OpenCV+Halcon+Baumer相机实战

锂电极片毛刺视觉检测:OpenCV+Halcon+Baumer相机实战

做锂电后段工序的朋友,对“极片裁切毛刺”这个词一定不陌生。它潜伏在模切、分条、极耳成型每一道工序里,一旦刺穿隔膜,轻则微短路引发自放电,重则直接热失控。这几年我在产线上做视觉检测,检测工具链一直围绕 Baumer …

2026/9/9 2:31:11
具身智能数据采集为何关键?从大模型到物理落地的工程链路解析

具身智能数据采集为何关键?从大模型到物理落地的工程链路解析

1. 为什么数据突然成了大模型与具身智能的“卡脖子”环节最近几年,大模型和具身智能这两个词几乎绑定在了一起。一边是大语言模型在文本、图像、视频上不断刷榜,另一边是人形机器人、机械臂、移动底盘开始尝试“装脑”。但真正在一线做项目的人心里都清楚…

2026/9/9 2:31:11
OP-TEE开发实战:基于ARM TrustZone的TEE环境搭建与TA编程

OP-TEE开发实战:基于ARM TrustZone的TEE环境搭建与TA编程

简介:OP-TEE_my_test 项目压缩包聚焦ARM可信执行环境下的安全应用开发,面向嵌入式安全与系统开发者,适合学习OP-TEE中Trustlet(TA)与Client Application(CA)的实现、集成和验证流程。压缩包仅15…

2026/9/9 2:31:11
会议室门牌工业级选型全解析:从耐磨防潮到主控与通信方案

会议室门牌工业级选型全解析:从耐磨防潮到主控与通信方案

会议室门牌这种东西,看起来就是个“墙上挂的小屏幕”,但真正做项目的人都知道,它恰恰是智慧办公里最容易翻车的硬件之一。会议室门口人来人往,推门、靠墙、搬白板、端咖啡,再加上中央空调冷凝水、茶水间蒸汽、保洁拖地…

2026/9/9 2:31:11
Clawdbot深度拆解:具身智能机器人的功能、场景与商业模式

Clawdbot深度拆解:具身智能机器人的功能、场景与商业模式

1. Clawdbot到底是什么:一个带爪子的“数字手”Clawdbot这个名字拆分来看,claw是爪子,bot是机器人,组合起来就是一个装了“手”的智能体。但如果你只把它理解成“机器人手臂”,那格局就小了。我做了这么多年智能硬件和…

2026/9/9 2:31:11
HarmonyOS Canvas绘制复平面:复数运算可视化应用开发实战

HarmonyOS Canvas绘制复平面:复数运算可视化应用开发实战

复数这个东西,高中课本里说它是“虚数”,但等到你做信号处理、电路分析、图形变换的时候才知道它一点都不虚。最近我在HarmonyOS上做了一款“复数运算可视化”的小应用,说到底就是把复数的加减乘除、模长、幅角这些抽象概念,放到一…

2026/9/9 2:26:10