- 博客(44)
- 收藏
- 关注
原创 chrono车辆仿真_04_ChAxle轴总成详解
/ 公共数据成员 —— 子系统句柄ChAxle 的所有实质性操作(初始化、同步、推进)都是代理模式——它只编排内部子系统的调用顺序,自身不参与物理计算。这种设计使得整车层面可以统一管理"一根轴上的全部组件",而不必单独操作每个子系统。整车级 轴级 子系统级。
2026-06-12 09:16:49
242
原创 chrono车辆仿真_05_悬架系统详解
public:// ======== 特性标识 ========// 能否转向?(前悬架可转向,后悬架通常不可)// 是否独立?(左右轮是否独立运动)// ======== 状态查询 ========// 相对于车架的安装位置// 获取刚体// 轮轴状态// ======== 初始化 ========std::shared_ptr<ChChassis> chassis, // 车架。
2026-06-12 09:15:14
101
原创 chrono车辆仿真_03_车架系统详解
车架(Chassis)是车辆的"骨架"——所有其他子系统都直接或间接地附着在车架上。在 Chrono 物理引擎中,车架是唯一一个创建 ChBody 的子系统(其他子系统如制动器、传动系是力元素,惯量为零,不贡献质量)。1.2 完整类层次图关键设计特点:ChChassis 是所有车架子系统的根基类,承担以下职责:2.3 成员变量逐一解释成员类型作用车架物理刚体。用 ChBodyAuxRef 而非 ChBody 是因为车架参考点不一定是质心收集所有 bushing(
2026-05-28 17:58:22
227
原创 chrono车辆仿真_02_核心基类解析
假设你要开发一个车辆仿真系统,面对以下组件:发现共性了吗?几乎所有车辆组件都共享以下特征:ChPart 的设计目的:把所有组件的共性提取出来,形成统一的接口。设计价值:2.2 关键成员变量解读m_mass, m_inertia, m_com - 惯性属性三要素思考:为什么组件需要知道自己的惯性?m_xform - 子系统的世界变换2.3 关键虚函数解析InitializeInertiaProperties() - 初始化惯性作用:在组件初始化时计算其质量、惯量、质心位置思考:为什么是纯虚函
2026-05-26 09:54:11
368
原创 chrono车辆仿真_01_总体架构概述
Chrono车辆仿真框架采用组件化设计,通过ChPart基类实现车辆组件的共性功能(质量、坐标系、可视化等),并由ChVehicle基类管理整体车辆系统。框架分为轮式车辆(ChWheeledVehicle)和履带车辆(ChTrackedVehicle)两大分支,包含底盘、悬架、轮胎、传动系统等模块化组件。这种层次化架构既保留了物理引擎的通用性,又针对车辆系统的特殊需求(如转向、悬架、轮胎力计算等)提供了专用解决方案,实现了从基础物理仿真到复杂车辆系统建模的自然过渡。
2026-05-26 09:52:34
418
原创 Obsidian 完整使用手册 10:自动化与模板系统篇
利用模板和自动化工具,将 Obsidian 打造成高效的知识管理系统。本文详解模板系统、Templater 插件、Dataview 查询以及工作流自动化。
2026-05-26 09:49:30
415
原创 Obsidian 完整使用手册 09:主题与 CSS 自定义篇
* 编辑器和阅读器使用系统字体 */body {/* 增加阅读舒适度 *//* 内容最大宽度 *//* 行距 *//* 内部链接样式 *//* 标签美化 */.tag {important;/* 自定义复选框 *//* 圆形复选框 */
2026-05-23 13:00:00
452
原创 Ubuntu 22.04 Docker 完整使用手册(2)
自动 DNS 解析:容器间可以通过容器名通信更好的隔离性:只有连接到同一网络的容器才能通信动态连接:容器可以在运行中连接和断开网络# 创建自定义网络# 启动两个容器在同一个自定义网络中# 通过容器名通信(自动 DNS 解析)# 查看容器在自定义网络中的 DNS 配置Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个(或)文件来配置应用的服务、网络和数据卷。注意:Ubuntu 22.04 Docker 安装推荐使用(子命令形式,插件版本),而非传统的。
2026-05-22 16:32:56
434
原创 Ubuntu 22.04 Docker 完整使用手册(1)
Docker 是一个开源的容器化平台,用于开发、交付和运行应用程序。它通过操作系统级虚拟化技术(容器)来打包软件及其所有依赖项,确保应用在任何环境中都能一致地运行。
2026-05-22 16:31:42
400
原创 Obsidian 完整使用手册 08:进阶使用技巧篇
设置 → 快捷键在搜索框中输入命令名称找到要绑定的命令点击快捷键区域按下你想要绑定的组合键按 Enter 确认。
2026-05-22 12:15:00
736
原创 Obsidian 完整使用手册 06:同步与备份篇
笔记数据的安全性至关重要。本文详细介绍 Obsidian 的同步方案、备份策略和数据恢复方法,确保你的笔记永不丢失。
2026-05-20 14:16:39
462
原创 Obsidian 完整使用手册 05:社区插件指南篇
Obsidian 拥有庞大的社区插件生态,有超过 2000 个插件可供选择。本文介绍如何安装管理插件,并推荐最实用的插件。
2026-05-20 14:16:10
506
原创 Obsidian 完整使用手册 03:双向链接与图谱篇
链接类型语法用途内部链接(Wiki 链接)[[笔记名]]链接到库中的其他笔记外部链接(Markdown 链接)[文本](URL)链接到网页或外部资源核心概念正向链接:从当前笔记指向其他笔记的链接反向链接:指向当前笔记的其他笔记中的链接未创建笔记:链接到不存在的笔记时,Obsidian 会以特殊样式显示,点击后可创建该笔记[[笔记名称|显示文本]]示例[[01-基础入门篇|查看基础入门指南]][[01-基础入门篇|查看基础入门指南]]显示为:查看基础入门指南(点击跳转到 01-基础入门篇)
2026-05-19 17:41:08
488
原创 Obsidian 完整使用手册 02:Markdown 语法篇
Markdown 是一种轻量级标记语言,使用纯文本格式编写,通过简单的符号标记来定义文档结构。你的笔记是纯文本文件,永远不会过时即使不使用 Obsidian,任何文本编辑器都能打开你的笔记可以轻松进行版本控制(如 Git)
2026-05-19 17:39:36
548
原创 Obsidian 完整使用手册 01:基础入门篇
Obsidian 是一款基于本地 Markdown 文件的知识管理和笔记应用。它不依赖任何云端服务,所有数据都以纯文本 Markdown 文件的形式存储在你的本地硬盘上。本地优先:数据完全由你掌控,无需联网即可使用双向链接:在笔记之间建立关联,构建知识网络扩展性强:通过 1000+ 社区插件和主题实现无限可能跨平台:支持 Windows、macOS、Linux、iOS、Android免费:个人使用完全免费,无功能限制。
2026-05-19 17:37:59
700
原创 Obsidian 完整使用手册 — 目录与索引
一份从入门到精通的 Obsidian 全面指南,涵盖基础操作、核心功能、插件生态、同步备份与进阶技巧。
2026-05-19 17:35:55
70
原创 Chrono物理核心源码梳理(十二)---------- Chrono 物理核心模块 - 完整 API 接口汇总
接口签名说明步后处理每步后执行自定义处理NSC, // 非光滑接触(互补问题)SMC // 光滑接触(惩罚方法)
2026-05-02 10:00:00
271
原创 Chrono物理核心源码梳理(十一)---------- ChSystem - 物理系统核心详细分析
【代码】Chrono物理核心源码梳理(十一)---------- ChSystem - 物理系统核心详细分析。
2026-05-01 10:00:00
249
原创 Chrono物理核心源码梳理(十)---------- ChAssembly - 物理对象集合详细分析
【代码】Chrono物理核心源码梳理(十)---------- ChAssembly - 物理对象集合详细分析。
2026-04-30 09:37:06
347
原创 Chrono物理核心源码梳理(九)---------- ChLinkBase/ChLink - 约束系统详细分析
【代码】Chrono物理核心源码梳理(九)---------- ChLinkBase/ChLink - 约束系统详细分析。
2026-04-30 09:36:43
228
原创 Chrono物理核心源码梳理(八)---------- ChShaft - 轴/旋转体系统详细分析
核心问题:为什么需要专门的 1D 轴类?答案:在机械系统仿真中,许多部件可以理想化为单自由度系统:优势:旋转轴(默认):平移轴(概念上):2.2 状态空间表示与刚体的对比:3.2 状态接口命名约定:注意事项:简单直接:单自由度,无需复杂变换。4.3 状态增量对比刚体:5. 固定与睡眠机制5.1 固定轴效果:睡眠条件(与刚体类似):6. 载荷系统6.1 施加载荷物理意义:7. 速度限制应用场景:传动比定义:8.2 通过电机连接8.3 与刚体的耦合9.
2026-04-28 18:31:12
176
原创 C++值序列化解决方案
nvwrap.h 是一个轻量级、无依赖、通用化的 C++ 名称 - 值包装工具。序列化(JSON / 二进制 / 存档)自动绑定 变量名 ↔ 值配置文件读写参数导出、日志打印、调试输出任何需要 “名字 + 数值” 成对出现 的业务场景自动把变量名变成字符串支持自定义名称自动识别参数个数(1 个 或 多个)跨平台、无 ##VA_ARGS移植问题纯头文件,直接包含即用效果value = 18作用:从 … 可变参数里,提取第 1 个参数。
2026-04-28 18:06:23
195
原创 Chrono物理核心源码梳理(七)---------- ChBodyAuxRef - 带辅助参考点的刚体详细分析
特性ChBody坐标系COM = REFCOM ≠ REF(可任意偏移)质量属性在 COM 定义在 COM 定义碰撞/可视化在 REF(即 COM)在 REF(可偏移)标记点相对于 COM相对于 REF内存占用较小稍大(存储额外坐标系)计算开销较小稍大(额外坐标变换)适用场景简单刚体CAD 导入、复杂几何。
2026-04-28 14:01:34
263
原创 Chrono物理核心源码梳理(六)---------- ChBody - 刚体系统详细分析
刚体是理想化的物体,满足:1. 任意两点间距离保持不变2. 质量分布由质量和惯性张量描述3. 运动完全由质心运动 + 绕质心旋转描述。
2026-04-28 14:00:37
273
原创 Chrono物理核心源码梳理(五)---------- ChPhysicsItem - 物理对象基类详细分析
对于不使用四元数的对象(如纯平动轴),坐标数相同。使用四元数的对象(如刚体)需要覆盖此方法。:系统将所有物理对象的状态打包到一个大的状态向量中,偏移量指示每个对象的数据位置。:ChPhysicsItem 是物理对象与系统求解器之间的"契约层"。批量修改时延迟到最后的 Update() 统一处理。:四元数是旋转的乘法群,不是加法群。错误的加法会破坏归一化约束。:这些方法标记为将被新的。:求解器期望的格式是。
2026-04-27 17:53:15
308
原创 Chrono物理核心源码梳理(四)---------- ChObj对象基类详细分析
基类 ChObj 不知道子类的具体类型,无法正确复制子类特有的数据。
2026-04-27 17:16:47
282
原创 Chrono物理核心(二)----------七大核心概念架构原型及运行逻辑
【代码】Chrono物理核心(二)----------七大核心概念架构原型及运行逻辑。
2026-04-27 16:53:46
35
原创 Chrono物理核心(一)---------- 核心概念
Project Chrono 是一个开源的多物理场仿真引擎,主要用于研究机械系统的动力学行为。核心模块提供了多体动力学仿真、碰撞检测、约束求解等基础功能。官方文档│ Chrono 核心概念一句话总结 ││ ││ ChSystem → "宇宙" - 包含一切的容器 ││ ChBody → "演员" - 有质量会运动的物体 ││ ChLink → "关系" - 连接物体的约束 ││ ChCollision → "互动" - 物体碰撞检测 │。
2026-04-27 15:44:20
362
转载 Java和C++中“隐藏/覆盖/重写/重载” 的区别
重载:重载是一个类的各个函数之间的,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。重写:重写是父类子类之间的。这里主要谈函数的重写和隐藏首先,重写和隐藏是互斥的,相对的。父子中都存在的函数,不是重写就是隐藏。重写和隐藏的本质区别是:重写是动态绑定,根据运行时引用所指向的对象的实际类型来决定调用相关类
2017-05-27 10:40:27
653
1
原创 Java ——面向对象的继承
Java语言是基于C++的,Java语言只进行面向对象的程序设计,也就是说,在开始用Java进行Java设计之前,必须将思想转换到面向对象的世界中来。继承的特性子类拥有父类非private的属性,方法。子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。子类可以用自己的方式实现父类的方法。Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重
2017-05-27 09:44:49
353
转载 Java中的类修饰符,成员变量修饰符,函数修饰符
收录至网络类修饰符:public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。final,将一个类生命为最终(即非继承类),表示他不能被其他类继承。friendly,默认的修饰符,只有在相同包中的对象才能使用这样的类。 成员变量修饰符:pub
2017-05-27 09:28:42
664
转载 深入理解Java的接口和抽象类
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅解
2017-05-27 09:19:58
339
原创 MFC——LIstCtrl中嵌入Edit和Combobox控件
在MFC中经常会使用到ListCtrl控件,并且在控件中可以对单元格进行Edit的编辑或者ComboBox的编辑。实现ListCtrl中用edit和combobox编辑并数据同步,下面就是我用到的这个功能的简单实例。为了让ListCtrol能更好的为我们所用,我们创建一个CEditListCtrl类继承自CListCtrl:EditListCtrl.h#pragma
2017-05-25 20:30:29
7146
1
原创 ObjectARX编程(八) --------有名对象字典、用户字典和字典中的对象
在AutoCAD数据库中,对象字典是字典类型数据库对象的总称。按其层次关系可分为两类,一是有AutoCAD数据库直接管理的第一层对象字典; 二是有第一层对象字典管理的第二层对象字典。为了便于区别,我们把第一层对象字典称为有名对象字典,用于在应用程序中定义的字典称为用户字典,多线样式字典、组字典都属于第二类对象字典。对象字典的第三层位字典中的对象。如组是组字典中的对象,多线样式是
2017-05-25 16:21:04
2950
原创 ObjectARX编程(七) -------符号表操作的总结
在上一节中介绍了层表的使用过程, 其他符号表处理方式类似,不同的符号表具有不同的对象,具体的操作,查看API。1. 对象的操作和理解访问图形数据库中对象的特性,必须在该对象被打开(创建对象时也会被打开)的状态下,用对象的指针进行访问,并且在访问结束后要及时关闭该对象,不然会引起AutoCAD的错误终止。在创建完对象后图形数据库会给对象一个ID号,可以根据这个ID号从数据
2017-05-25 16:19:36
2288
原创 ObjectARX编程(六) ------块和属性
1. 块的新增cstring blkname;//获取当前图形数据库AcDbBlockTable* pBlkTbl = NULL;acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForWrite);//创建新的块表记录AcDbBloc
2017-05-25 16:17:01
5530
原创 ObjectARX编程(五) ---------符号表中层表的操作
创建新的图层,实际上就是创建一个新的层表的记录,并将其添加到层表中。修改一个图层的颜色,可以从层表中获取指定的记录,然后使用ACDBLayerTableRecord类的setColor函数设置层表记录的颜色。删除一个图层,需要首先从层表中获取指定的层表记录,然后将层表记录设置一个删除的标记。1. 新建图层szLayerName;
2017-05-25 16:15:18
1379
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅