自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1696)
  • 问答 (1)
  • 收藏
  • 关注

原创 挑战数学文明的基石:进位才是压制人类发展的“二象金箔”

但我们是否想过,每一次“进位”,在看似拓展了数字表示范围的同时,也带来了一次认知上的复杂化和维度的损失?下一次,当你看到计算机屏幕上的代码,或是演算纸上的一串数字时,不妨这样思考:我们所运用的,究竟是宇宙的终极真理,还是仅仅是“进位文明”这个伟大囚笼中,一套自洽而完美的生存法则?“进位”这张“二象金箔”,在赋予我们强大计算能力的同时,也可能将我们的思维模式固化在了“层级”和“序列”的维度上。它是一把精巧的钥匙,打开了现代科学的大门,但或许,它同时也是一把坚固的锁,锁住了通往另一种未知文明范式的门。

2025-06-19 14:19:39 631 35

原创 对边界表示法的核心理解: 拓扑对象赋予了几何对象边界和范围

包前缀全称角色与职责类比示例gp_几何图元:最基础的数学元素,用于计算和定义。砖块、水泥、坐标尺gp_Pnt(点),gp_Vec(向量),gp_Dir(方向),gp_Trsf(变换)Geom_Geometry纯粹几何:定义理想化的、无限的几何形状(曲线、曲面)的数学方程。设计蓝图Geom_LineGeom_PlaneTopoDS_拓扑结构:描述几何体各部分如何连接,并赋予其边界。具体的建筑部件(顶点),(边),(面),(实体)BRep_边界表示工具:提供访问和查询TopoDS_对象及其关联。

2025-06-17 10:20:04 1875 23

原创 没有绝对完美的架构:架构因迭代而涅槃

一个在当前看来近乎完美的架构,随着时间的推移,外部技术的演进(新的语言、框架、中间件的出现)、业务需求的变更(市场扩张、用户行为变化)、以及系统内部复杂度的自然累积(代码的熵增),都可能使其逐渐变得臃肿、低效,甚至成为发展的桎梏。市场的反馈、运维的数据、开发团队的体验,都成为驱动架构演进的“选择压力”,促使其向更优的方向“突变”和“选择”。“涅槃”一词,本意指超越生死轮回的境界,在软件架构的语境下,它隐喻着架构通过不断的自我扬弃和重构,从旧的束缚中解脱,达到一种更高层次的适应性和生命力。

2025-05-08 19:30:41 400 12

原创 Qt故事会: 初识惊叹跨平台魔力 , 深入惨遭跨平台挑战

这就像是给了你一套能在各种道路上行驶的汽车零件(Qt),但如果组装汽车的人(原始开发者)按照越野车的标准加了很多只适用于崎岖山路的特殊装备(Windows 特有代码),那么当你想把这辆车开到平坦的公路上(移植到 Linux)时,就需要拆掉或改造那些特殊装备,这当然会很费劲。Qt 框架本身尽力提供了跨平台的基础,但如果最初的开发者没有严格遵守跨平台编码规范,大量使用了平台绑定的特性,那么后续的移植工作自然会非常痛苦,远非简单的“重新编译”就能解决。Qt 确实是一个强大的跨平台框架,它极大地简化了多平台开发。

2025-05-05 17:24:00 594 15

原创 QML对象更新机制与缓存问题的讨论

QML 很适合“首屏直观开发”,但一旦进入“动态组件管理阶段”,你必须自己设计组件的生命周期与状态控制机制,否则缓存机制会让你掉进“状态不同步”的坑里。用缓存要有意识;给组件设计 reset;不信赖生命周期钩子;优先重置,不轻言销毁;靠测试发现复用问题。

2025-05-01 20:42:52 1172 12

原创 QML进阶:deleteLater()延迟特性与图形资源即时清理的冲突

使用。

2025-04-13 17:42:26 764 7

原创 Qt界面流畅性的系统讨论: 多维度渲染性能优化

实际开发中应结合性能分析工具精准定位瓶颈,优先解决影响最大的问题(如算法复杂度从 O(n²) 优化到 O(n)),再逐步实施其他优化策略。四个维度提供系统化解决方案,涵盖从代码优化到硬件加速的完整技术链。,导致界面无法及时刷新(通常需保持 60 FPS)。合并多个绘制调用为单个调用(减少OpenGL状态切换)。强制固定刷新频率(如30 FPS)。仅保留最新数据,避免内存无限增长。降低数据密度,减少传输和计算量。合并高频刷新请求,避免冗余渲染。仅重绘界面中发生变化的区域。使用GPU硬件加速图形绘制。

2025-02-20 09:27:43 1636 37

原创 山外青山楼外楼 : 详解 Qt信号与槽的100种用法 (眼界篇)

在 Qt 信号与槽的应用中,基于其核心机制和可扩展性,理论上有无限种组合和变种。具体来说,常见的信号与槽用法和场景应用大约可以总结出以下 100 多种主要方式,分为几个大类:在自定义类中定义信号和槽,可以让你的类具备灵活的通信能力。2. Lambda 表达式作为槽在现代 C++(C++11及以上)中,可以使用 Lambda 表达式代替传统槽函数。这对于一次性处理或简化代码非常有用。3. 函数指针的使用Qt 5 引入了基于函数指针的信号与槽连接方式,比字符串形式更加安全和高效。4. 信号与槽的

2024-11-30 19:47:31 1907 38

原创 基于epoll ET模式 的 非阻塞IO服务器模型

你的这段代码整体设计非常扎实,目标明确——使用 `epoll` 的 **边缘触发 (ET) 模式** 实现一个高并发 TCP 服务器,模拟**接收小缓冲区**和**大数据压力**下的传输情景,细节处理得也比较完善,尤其是在非阻塞 I/O、缓冲处理和连接管理上都非常到位。即使你设了 `recv_buf[1]`,也可以把 `recv()` 调整为尽可能多地接收数据,比如设为 `recv_buf[512]`,然后 `memcpy` 进去,这样你仍然保有模拟小缓冲区的结构,但性能好很多。

2024-04-03 21:07:53 1091 18

原创 从 2D 俯视图到 3D 模型:基于 OpenGL 的 PCB 伪三维重建技术解析

如果只是为了“看起来像3D”使用路线一(Shader置换)。你需要人工或用简单的图像处理手段做一张“高度蒙版”图(芯片涂白,板子涂黑)。使用路线一(Shader置换)。你需要人工或用简单的图像处理手段做一张“高度蒙版”图(芯片涂白,板子涂黑)。这种方法在 OpenGL 中运行效率极高,且保留了照片的所有细节。**如果是为了“如果是为了“逆向工程”或“测量”使用路线二(几何重建)。俯视图还原 3D 是个不适定问题(Ill-posed problem)。如果要更精准,现在的趋势是使用。

2025-11-20 16:21:33 590

原创 拒不下牌桌:LLM 时代,为何 C++ 仍是算力之王?

C++ 的设计哲学是:“你不需要为你不使用的东西付费”。通过模板元编程(Template Metaprogramming)和 C++20 的constexpr,我们可以在编译期完成大量的计算和逻辑判断。运行时剩下的,只有最精简的机器码。这使得 C++ 既能像 Python 一样构建高层抽象(比如计算图),又能像汇编一样直接操作内存。C++ 确实难学。它的学习曲线陡峭得像喜马拉雅山,充满了未定义的行为(Undefined Behavior)和内存陷阱。

2025-11-19 20:20:19 800

原创 压扁他! 如何理解反对称行列式奇数阶的几何意义

在一个奇数维的空间里,如果一种运动(变换)是由纯粹的旋转分量组成的(反对称矩阵),那么它必然存在一个不动的轴。沿着这个轴,空间没有被拉伸或旋转,而是被“压死”了。因为这一维度的塌缩,使得整个nnn维平行多面体的体积变成了零。

2025-11-19 20:01:28 460

原创 OpenGL 中的切变变换

几何直觉:像推扑克牌一样"滑移"数学本质:某个坐标受另一个坐标影响关键性质:保持面积/体积(行列式=1)OpenGL应用:斜体、投影、动画效果与旋转区别:改变角度但不改变大小。

2025-11-17 18:29:59 315

原创 为什么矩阵的行列式(Determinant)能够度量线性变换导致的体积缩放 (使用OpenGL描述)

OpenGL中的模型变换矩阵本身就是对模型局部坐标系的一次完整描述。矩阵的各列定义了新坐标系的基向量,而行列式则通过计算这些新基向量所围成的平行六面体的体积,直接给出了相对于原始单位立方体(体积为1)的缩放比例。因此,行列式成为了衡量线性变换如何“放大”或“缩小”空间的完美数学工具。

2025-11-01 12:34:32 930

原创 为什么需要行列式以及在计算机图形学中的应用

应用场景行列式的作用相关API变换有效性det⁡≠0det0保证可逆镜像检测det⁡0\det < 0det0检测翻转所有3D引擎法向量变换计算M−1M^{-1}M−1需要det⁡M\det(M)detMGLSL着色器面积/体积直接计算几何量物理引擎纹理映射Jacobian行列式控制采样glTF, KTX投影矩阵验证相机设置。

2025-10-31 08:20:14 866

原创 从 OpenGL 到 Vulkan:Khronos 标准完整解读

这些标准覆盖了从底层硬件加速到高层应用开发的完整技术栈。Khronos的核心理念是"开放、免版税、跨平台",通过行业协作制定标准,避免技术碎片化,促进创新和互操作性。目前最活跃的标准是Vulkan、OpenXR、glTF和SYCL。

2025-10-27 12:14:22 942

原创 在C++模板函数中,如何保持参数原有的值类别(左值/右值)并将其传递给另一个函数

保持参数值类别的完整方案使用T&&万能引用接收参数使用转发参数让编译器的模板推导和引用折叠机制自动处理值类别这就是为什么这个组合被称为"完美转发"——它完美地保持了参数的所有属性!

2025-10-22 11:14:32 388

原创 C++在构造函数和析构函数中调用虚函数不构成多态

因为在构造/析构期间,对象的动态类型是当前正在构造/析构的类,而不是最终的派生类。虚函数表指针会在构造/析构过程中动态切换,确保只调用已构造部分的函数,这是为了安全性设计。不是,这是 C++ 的设计特性。如果允许多态,会导致访问未构造或已销毁的成员,造成未定义行为。,都会调用当前正在构造/析构的类的版本。,无论该函数是否声明为。

2025-10-22 09:44:48 298

原创 C++ 线程安全问题的本质理解

多个线程并发访问共享资源时,程序能够正确、高效地运行,且不会出现意料之外的结果。违反这个定义的,都是线程安全问题。

2025-10-15 10:00:18 703

原创 详解常见时间复杂度

就是衡量你的代码"有多慢"的一个标准,特别是当数据量变大时,程序运行时间会增长多快。

2025-10-12 18:38:51 340

原创 什么是 CAD 中的 特征 约束 求解器 ?

总而言之,“特征约束求解器”是CAD软件中一个至关重要的智能引擎。它将工程师直观的“特征”操作和“约束”定义,转化为精确的数学模型并求解,最终驱动整个三维模型的参数化变更,是现代数字化设计不可或缺的基石。

2025-09-14 13:55:43 859

原创 切线的危机:为何“几乎接触”会迷惑几何算法

在人类的直觉中,几何是优雅且明确的。一条线平滑地接触一个圆,一个球体稳稳地放在一个平面上——这些都是“切”的瞬间,一个清晰、唯一的点。然而,在计算机冰冷的逻辑世界里,这个优雅的瞬间变成了一场关于精度、歧义和数值不稳定的噩梦。对于依赖最小距离计算的几何算法而言,切向(Tangency)和近切向(Near-Tangency)是导致失败和不可预测行为最常见、也最棘手的根源。

2025-09-13 13:26:11 851

原创 OCCT 中的线框 是否 必须闭合呢?

在OCCT(Open CASCADE Technology)中,线框(wireframe)不一定必须是闭合的,这取决于具体的应用场景和你要构建的几何对象类型。所以答案是:OCCT中的线框不是必须闭合的,但在某些操作(如创建面)时需要闭合的线框。你可以根据具体需求选择创建开放或闭合的线框。

2025-09-11 18:12:29 266

原创 什么是 时序数据库?

特性时序数据库传统关系型数据库数据模型时间序列(时间戳,标签,指标)关系表(行和列)写入模式高吞吐、几乎只追加随机读写、频繁更新查询模式基于时间范围的聚合灵活的关联和复杂查询优化目标写入速度、存储压缩、时间范围查询事务一致性、数据完整性、灵活性总而言之,当时你的业务产生了海量的、基于时间的、几乎只增不改的数据,并且你需要对这些数据进行高效的写入和基于时间的聚合分析时,时序数据库就是你不可或缺的强大工具。

2025-09-08 09:24:46 1011 1

原创 什么是 OpenSceneGraph (OSG) ?

OpenSceneGraph 是一个成熟、强大且高效的 3D 图形开发框架。它通过场景图的概念极大地简化了复杂 3D 应用程序的开发难度,同时通过深度的性能优化保证了极致的渲染效率。如果你是一名 C++ 开发者,需要在工程、仿真、VR、GIS 等领域开发专业的 3D 应用,OSG 是一个非常值得学习和使用的优秀工具包。

2025-09-08 09:18:22 780

原创 什么是深度缓存与模板缓存?

在将片段颜色写入颜色缓存之前,会先检查当前片段的深度值是否比深度缓存中已存储的对应像素的深度值更小(即离相机更近)。例如,一个24位的深度缓存和一个8位的模板缓存共同组成一个32位的深度-模板缓存。模板缓存同样是一块与屏幕像素一一对应的内存区域,但它存储的不是深度或颜色信息,而是一个整数值(通常是8位,0-255)。深度缓存是一块与屏幕像素一一对应的内存区域,它专门用于存储每个像素的深度值(即该像素位置对应的物体到摄像机的距离)。于是,用新片段的深度值更新深度缓存,并用新片段的颜色更新颜色缓存。

2025-08-27 12:19:10 581 4

原创 在 occt cad开发中 如何区分 观察工具 与 造型工具 呢?

用途主要模块特点造型BRep*Geom*gp*处理数学/几何,CPU密集,结果持久观察AIS*V3d*Graphic3d*处理显示/交互,GPU加速,可随时改变。

2025-08-27 10:31:52 397 1

原创 详解 Graphic3d_ClipPlane

是一个功能完备且设计精良的类,它不仅仅是一个数学上的平面,更是一个集几何定义、状态控制、视觉属性和性能优化于一体的图形对象。掌握它的使用方法,特别是剖切面(Capping)和平面链(Chaining)的特性,是开发高质量OCCT交互式应用的关键一步。换句话说,它是一种纯粹的、无损的视觉特效,而不是一个几何造型操作。特性(裁剪平面)布尔运算 (目的可视化、观察内部结构几何造型、创建新形状作用层面视觉层 (GPU渲染)数据层 (模型拓扑与几何)对模型数据的影响无影响,原始模型不变。

2025-08-27 10:27:00 1258 1

原创 修复 C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据 的常用手段

因为裁剪平面数量很小,不存在溢出风险,代码简洁明了。

2025-08-27 10:07:40 602 1

原创 什么是时序数据库 ?

时序数据库是一种为了高效存储、处理和检索时序数据而特殊设计和优化的数据库。时序数据,顾名思义,就是按时间顺序记录的一系列数据点。每个数据点都和一个时间戳关联。时序数据库是为处理带时间戳的海量数据而生的一种专用数据库。它通过列式存储、高效压缩、时间分区等核心技术,解决了传统数据库在写入性能、存储成本和查询效率上的瓶颈,是监控、物联网、金融科技等领域的核心基础设施。简单来说,当你的数据是随着时间不断产生的,并且你需要高效地写入和查询它们时,时序数据库就是你最好的选择。

2025-08-26 16:31:42 431 5

原创 详细解析 glClearBufferfv 函数

glClearBufferfv 是 OpenGL 3.0 引入的核心函数,用于清除指定颜色缓冲区的特定绘制缓冲区为指定的颜色值。· 是否启用了颜色写入:glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)· 对于颜色缓冲区:4个浮点数数组 [R, G, B, A],范围通常为 [0.0, 1.0]· GL_DEPTH:深度缓冲区(但应该使用 glClearBufferfi)· 对于多渲染目标(MRT):指定要清除的颜色附件索引(0, 1, 2…

2025-08-25 20:49:33 590 5

原创 c++ 被 static const 同时修饰的数组 有什么特性?

如果需要跨编译单元共享同一实例,考虑使用 extern const 并在一个 .cpp 文件中定义。· 在头文件中使用 static const 数组时,每个包含该头文件的编译单元都会获得自己的副本。· 内部链接(在命名空间作用域):只能在当前编译单元(.cpp 文件)内访问。这种组合特别适合用于那些在编译时已知且不需要修改的常量数据集合。· 无链接(在局部作用域):只能在声明的作用域内访问。· 静态存储期:数组在程序的整个生命周期内都存在。· 内存效率:只在数据段存储一份副本。· 数组元素不可修改。

2025-08-25 20:41:44 302 1

原创 Bun 是否能替代 Nodejs ?

Bun 自称是一个 “All-in-one JavaScript runtime”。这意味着它不仅仅想做 Node.js 所做的事(运行 JS/TS 代码),还想把前端和后端开发中常用的一大堆工具链(Toolchain)全部内置,并且做得极快。极高的性能:这是 Bun 最引人注目的卖点。它使用Zig这种低级系统编程语言编写,并采用了 Apple 的引擎,而非 Node.js 和 Chrome 使用的V8引擎。这使得 Bun 在启动速度、I/O 操作、包安装等方面都比 Node.js 快得多。

2025-08-24 21:51:39 432 5

原创 深度解析 OCCT OpenGl_ClippingIterator:裁剪平面的统一遍历器

内部将裁剪平面分为两组:全局平面 () 和局部平面 (如果外部代码(如渲染器)需要依次处理所有这些平面,它就必须先遍历一个列表,再遍历另一个列表,这会使代码变得复杂。通过封装这一复杂性,将两个列表“展平”成一个连续的虚拟序列。使用者只需要创建一个迭代器实例,然后使用标准的More()Next()Value()模式进行循环,就可以无缝地访问所有平面。可以把它理解成一个适配器或外观(Facade),它为复杂的内部存储结构提供了一个简洁的遍历接口。是一个优雅的辅助类 (Helper Class)

2025-08-24 21:35:21 416 3

原创 深度解析 OCCT OpenGl_Clipping 类:三维渲染中的裁剪与剖切状态管理

类的核心职责是管理一组裁剪平面的状态。在 3D 图形中,裁剪平面就像一把无限大的刀,可以切掉场景的一部分,只显示剩下的部分。全局平面与局部平面:区分应用于整个视图的平面和仅应用于特定物体的平面。启用与禁用状态:跟踪哪些平面是激活的,哪些是暂时或永久禁用的。剖切逻辑 (Capping):这是该类最复杂也最重要的功能之一。当一个实体被裁剪平面切割时,OCCT 需要在切口处生成一个新的面(称为 “Cap” 或剖切面)。类提供了专门的逻辑来辅助这个剖切算法,例如在特定阶段临时屏蔽或只启用某个特定的裁剪平面。

2025-08-24 21:32:29 564

原创 什么是 c++ POD类型(Plain Old Data)?

POD,全称(平凡旧数据类型),是 C++ 类型系统中的一个分类。顾名思义,POD 类型是一种“平凡的”、“老的”、像 C 语言里的结构体一样简单的数据类型。平凡(Trivial)和标准布局(Standard Layout)。一个类型要成为 POD,它必须同时满足这两个条件。特性平凡(Trivial)标准布局(Standard Layout)POD(两者兼备)核心意义可被底层内存操作(如memcpy)安全复制内存布局与C兼容同时满足两者关键要求使用编译器生成的默认特殊成员函数,无虚函数。

2025-08-23 19:31:19 1120 2

原创 详解 glEnableVertexAttribArray

函数角色比喻定义数据规范接水管,规定水流启用数据流打开水龙头开关开始用水开始用水画画/冲洗。

2025-08-23 19:24:21 963

原创 Qt 什么样的按钮会有 toggled信号?

拥有toggled信号的按钮:所有可选中(checkable)的按钮,包括设置了的 QPushButton 和 QToolButton,以及天生的 QRadioButton 和 QCheckBox。何时使用toggled:当你关心按钮的选中状态(checked state)是否改变时,应该连接这个信号。这是最可靠的方式。何时使用clicked:当你只关心用户是否执行了点击操作,而不太关心状态如何变化时,使用这个信号。在实际开发中,如果您的逻辑依赖于按钮的“开”或“关”状态,使用toggled。

2025-08-22 13:46:05 777 34

原创 为什么片元着色器的扩展名是frag?

在图形渲染管线中,“frag”(或 “fragment”)被称为片元着色器,主要是因为它处理的单位是"片元"(Fragment)。这种命名方式强调了图形管线中"片元"这一中间状态的重要性,比"像素着色器"的表述更准确反映其实际工作阶段。顶点着色器处理几何数据,而片元着色器专门处理光栅化后的片元数据。// 这个片元可能最终不会显示在屏幕上。// 取决于后续的深度测试、混合等操作。// 片元着色器处理片元。

2025-08-22 12:07:30 424 1

原创 什么是OpenGL中的着色器变量?

在 OpenGL 中,是在着色器程序(使用 GLSL 语言编写)中使用的特殊变量,它们是实现 CPU 上的应用程序与 GPU 上的着色器之间,以及不同着色器阶段之间进行数据通信的关键机制。简单来说,它们是数据进出着色器这个小程序”的通道。着色器变量主要通过存储限定符(Storage Qualifiers)来定义其作用和数据流向。在现代 OpenGL (3.3+ Core Profile) 中,主要的限定符是inout和uniform。

2025-08-21 19:38:56 890 2

自己编译的 c++ 98-23 标准(草案) 自行下载

自己编译的 c++ 98-23 标准(草案) 自行下载

2025-03-15

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除