四元数数学性质、运算规则、线性插值(公式版)

news2024/11/19 3:19:30

四元数

在这里插入图片描述

Q = ⟨ x , y , z , w ⟩ Q = \langle x, y, z, w \rangle Q=x,y,z,w

Q = x i + y j + z k + w Q = xi + yj + zk + w Q=xi+yj+zk+w

1.运算与性质

1)数乘

Q = s ⋅ ⟨ x , y , z , w ⟩ = ⟨ s ⋅ z , s ⋅ y , s ⋅ z , s ⋅ w ⟩ Q = s \cdot \langle x, y, z, w \rangle = \langle s \cdot z, s \cdot y, s \cdot z, s \cdot w \rangle Q=sx,y,z,w=sz,sy,sz,sw

Q s = ( x s , y s , z s , w s ) \frac{Q}{s} = \left( \frac{x}{s}, \frac{y}{s}, \frac{z}{s}, \frac{w}{s} \right) sQ=(sx,sy,sz,sw)

2)四元数加减法(Add,Substract)

Q = ⟨ x 1 + x 2 , y 1 + y 2 , z 1 + z 2 , w 1 + w 2 ⟩ Q = \langle x_1 + x_2, y_1 + y_2, z_1 + z_2, w_1 + w_2 \rangle Q=x1+x2,y1+y2,z1+z2,w1+w2

Q = ⟨ x 1 − x 2 , y 1 − y 2 , z 1 − z 2 , w 1 − w 2 ⟩ Q = \langle x_1 - x_2, y_1 - y_2, z_1 - z_2, w_1 - w_2 \rangle Q=x1x2,y1y2,z1z2,w1w2

3) 模运算(Norm)

∥ Q ∥ = x 2 + y 2 + z 2 + w 2 \|Q\| = \sqrt{x^2 + y^2 + z^2 + w^2} Q=x2+y2+z2+w2

4)标准化(Normalize)

Q normalized = Q ∥ Q ∥ = ⟨ x , y , z , w ⟩ x 2 + y 2 + z 2 + w 2 Q_{\text{normalized}} = \frac{Q}{\|Q\|} = \frac{\langle x, y, z, w \rangle}{\sqrt{x^2 + y^2 + z^2 + w^2}} Qnormalized=QQ=x2+y2+z2+w2 x,y,z,w

5)共轭(Conjugate)

Q ∗ = ⟨ − x , − y , − z , w ⟩ Q^* = \langle -x, -y, -z, w \rangle Q=x,y,z,w

6)逆元 (Reverse)

Q − 1 = Q ∗ ∥ Q ∥ 2 Q^{-1} = \frac{Q^*}{\|Q\|^2} Q1=Q2Q

7)四元数乘法(Mutiply)

Q 1 ∗ Q 2 = ( w 1 w 2 − x 1 x 2 − y 1 y 2 − z 1 z 2 , w 1 x 2 + x 1 w 2 + y 1 z 2 − z 1 y 2 , w 1 y 2 − x 1 z 2 + y 1 w 2 + z 1 x 2 , w 1 z 2 + x 1 y 2 − y 1 x 2 + z 1 w 2 ) \begin{align*} Q_1 * Q_2 = \left( w_1w_2 - x_1x_2 - y_1y_2 - z_1z_2, \right. \\ \left. w_1x_2 + x_1w_2 + y_1z_2 - z_1y_2, \right. \\ \left. w_1y_2 - x_1z_2 + y_1w_2 + z_1x_2, \right. \\ \left. w_1z_2 + x_1y_2 - y_1x_2 + z_1w_2 \right) \end{align*} Q1Q2=(w1w2x1x2y1y2z1z2,w1x2+x1w2+y1z2z1y2,w1y2x1z2+y1w2+z1x2,w1z2+x1y2y1x2+z1w2)

注意:在下文我们使用 · (点) 来表示点乘或者数乘,使用 * (星)表示四元数乘法

7)欧拉角构造四元数

在欧拉角的值为角度时
Yaw ( ψ ) → ψ Pitch ( θ ) → θ Roll ( ϕ ) → ϕ \begin{align*} \text{Yaw (}\psi\text{)} &\rightarrow \psi \\ \text{Pitch (}\theta\text{)} &\rightarrow \theta \\ \text{Roll (}\phi\text{)} &\rightarrow \phi \\ \end{align*} Yaw (ψ)Pitch (θ)Roll (ϕ)ψθϕ
在值为弧度时
Yaw ( ψ ) → Yaw ( ψ ) ⋅ π 180 Pitch ( θ ) → Pitch ( θ ) ⋅ π 180 Roll ( ϕ ) → Roll ( ϕ ) ⋅ π 180 \begin{align*} \text{Yaw (}\psi\text{)} &\rightarrow \frac{\text{Yaw (}\psi\text{)} \cdot \pi}{180} \\ \text{Pitch (}\theta\text{)} &\rightarrow \frac{\text{Pitch (}\theta\text{)} \cdot \pi}{180} \\ \text{Roll (}\phi\text{)} &\rightarrow \frac{\text{Roll (}\phi\text{)} \cdot \pi}{180} \\ \end{align*} Yaw (ψ)Pitch (θ)Roll (ϕ)180Yaw (ψ)π180Pitch (θ)π180Roll (ϕ)π

变化后,求得四元数的四个分量
x = sin ⁡ ( ψ 2 ) ⋅ cos ⁡ ( θ 2 ) ⋅ cos ⁡ ( ϕ 2 ) − cos ⁡ ( ψ 2 ) ⋅ sin ⁡ ( θ 2 ) ⋅ sin ⁡ ( ϕ 2 ) y = cos ⁡ ( ψ 2 ) ⋅ sin ⁡ ( θ 2 ) ⋅ cos ⁡ ( ϕ 2 ) + sin ⁡ ( ψ 2 ) ⋅ cos ⁡ ( θ 2 ) ⋅ sin ⁡ ( ϕ 2 ) z = cos ⁡ ( ψ 2 ) ⋅ cos ⁡ ( θ 2 ) ⋅ sin ⁡ ( ϕ 2 ) − sin ⁡ ( ψ 2 ) ⋅ sin ⁡ ( θ 2 ) ⋅ cos ⁡ ( ϕ 2 ) w = cos ⁡ ( ψ 2 ) ⋅ cos ⁡ ( θ 2 ) ⋅ cos ⁡ ( ϕ 2 ) + sin ⁡ ( ψ 2 ) ⋅ sin ⁡ ( θ 2 ) ⋅ sin ⁡ ( ϕ 2 ) \begin{align*} x &= \sin\left(\frac{\psi}{2}\right) \cdot \cos\left(\frac{\theta}{2}\right) \cdot \cos\left(\frac{\phi}{2}\right) - \cos\left(\frac{\psi}{2}\right) \cdot \sin\left(\frac{\theta}{2}\right) \cdot \sin\left(\frac{\phi}{2}\right) \\ y &= \cos\left(\frac{\psi}{2}\right) \cdot \sin\left(\frac{\theta}{2}\right) \cdot \cos\left(\frac{\phi}{2}\right) + \sin\left(\frac{\psi}{2}\right) \cdot \cos\left(\frac{\theta}{2}\right) \cdot \sin\left(\frac{\phi}{2}\right) \\ z &= \cos\left(\frac{\psi}{2}\right) \cdot \cos\left(\frac{\theta}{2}\right) \cdot \sin\left(\frac{\phi}{2}\right) - \sin\left(\frac{\psi}{2}\right) \cdot \sin\left(\frac{\theta}{2}\right) \cdot \cos\left(\frac{\phi}{2}\right) \\ w &= \cos\left(\frac{\psi}{2}\right) \cdot \cos\left(\frac{\theta}{2}\right) \cdot \cos\left(\frac{\phi}{2}\right) + \sin\left(\frac{\psi}{2}\right) \cdot \sin\left(\frac{\theta}{2}\right) \cdot \sin\left(\frac{\phi}{2}\right) \\ \end{align*} xyzw=sin(2ψ)cos(2θ)cos(2ϕ)cos(2ψ)sin(2θ)sin(2ϕ)=cos(2ψ)sin(2θ)cos(2ϕ)+sin(2ψ)cos(2θ)sin(2ϕ)=cos(2ψ)cos(2θ)sin(2ϕ)sin(2ψ)sin(2θ)cos(2ϕ)=cos(2ψ)cos(2θ)cos(2ϕ)+sin(2ψ)sin(2θ)sin(2ϕ)

如果需要对某个轴旋转特定角度
Q = ( sin ⁡ ( θ 2 ) ⋅ a , sin ⁡ ( θ 2 ) ⋅ b , sin ⁡ ( θ 2 ) ⋅ c , cos ⁡ ( θ 2 ) ) Q = \left(\sin\left(\frac{\theta}{2}\right) \cdot a, \sin\left(\frac{\theta}{2}\right) \cdot b, \sin\left(\frac{\theta}{2}\right) \cdot c, \cos\left(\frac{\theta}{2}\right)\right) Q=(sin(2θ)a,sin(2θ)b,sin(2θ)c,cos(2θ))

8)四元数转欧拉角

Yaw ( ψ ) → arctan ⁡ 2 ( 2 ⋅ ( x ⋅ y + z ⋅ w ) , 1 − 2 ⋅ ( y 2 + z 2 ) ) Pitch ( θ ) → arcsin ⁡ ( 2 ⋅ ( x ⋅ z − w ⋅ y ) ) Roll ( ϕ ) → arctan ⁡ 2 ( 2 ⋅ ( y ⋅ z + x ⋅ w ) , 1 − 2 ⋅ ( z 2 + y 2 ) ) \begin{align*} \text{Yaw (}\psi\text{)} &\rightarrow \arctan2(2 \cdot (x \cdot y + z \cdot w), 1 - 2 \cdot (y^2 + z^2)) \\ \text{Pitch (}\theta\text{)} &\rightarrow \arcsin(2 \cdot (x \cdot z - w \cdot y)) \\ \text{Roll (}\phi\text{)} &\rightarrow \arctan2(2 \cdot (y \cdot z + x \cdot w), 1 - 2 \cdot (z^2 + y^2)) \end{align*} Yaw (ψ)Pitch (θ)Roll (ϕ)arctan2(2(xy+zw),12(y2+z2))arcsin(2(xzwy))arctan2(2(yz+xw),12(z2+y2))
(注意:arctan2是一个被多种编程语言支持的反正切函数)

9)四元数点乘

Q 1 ⋅ Q 2 = x 1 ⋅ x 2 + y 1 ⋅ y 2 + z 1 ⋅ z 2 + w 1 ⋅ w 2 Q_1 \cdot Q_2 = x_1 \cdot x_2 + y_1 \cdot y_2 + z_1 \cdot z_2 + w_1 \cdot w_2 Q1Q2=x1x2+y1y2+z1z2+w1w2

我们可以通过这样的方式计算出两个四元数的夹角
θ = arccos ⁡ ( Q 1 ⋅ Q 2 ) \theta = \arccos(Q_1 \cdot Q_2) θ=arccos(Q1Q2)

当点积为0时,表明两个四元数正交
Q 1 ⋅ Q 2 = 0 Q_1 \cdot Q_2 = 0 Q1Q2=0
当四元数保持单位模时,表明为单位四元数
Q ⋅ Q = 1 Q \cdot Q = 1 QQ=1

10)四元数普通线性插值

Lerp的公式如下

Q lerp = ( 1 − t ) ⋅ Q 1 + t ⋅ Q 2 Q_{\text{lerp}} = (1 - t) \cdot Q_1 + t \cdot Q_2 Qlerp=(1t)Q1+tQ2
这个插值被称为NLerp,也就是先进行线性插值,再进行标准化
Q nlerp = ( 1 − t ) ⋅ Q 1 + t ⋅ Q 2 ∥ ( 1 − t ) ⋅ Q 1 + t ⋅ Q 2 ∥ Q_{\text{nlerp}} = \frac{(1 - t) \cdot Q_1 + t \cdot Q_2}{\| (1 - t) \cdot Q_1 + t \cdot Q_2 \|} Qnlerp=(1t)Q1+tQ2(1t)Q1+tQ2
注意:此处的“点”均为“数乘”或“四元数点乘”

11) 四元数球面线性插值

α = cos ⁡ − 1 ( Q 1 ⋅ Q 2 ) \alpha = \cos^{-1}(Q_1 \cdot Q_2) α=cos1(Q1Q2)

Q slerp = = sin ⁡ ( ( 1 − t ) ⋅ α ) sin ⁡ ( α ) ⋅ Q 1 + sin ⁡ ( t ⋅ α ) sin ⁡ ( α ) ⋅ Q 2 Q_{\text{slerp}} = = \frac{\sin((1 - t) \cdot \alpha)}{\sin(\alpha)} \cdot Q_1 + \frac{\sin(t \cdot \alpha)}{\sin(\alpha)} \cdot Q_2 Qslerp==sin(α)sin((1t)α)Q1+sin(α)sin(tα)Q2
注意:此处的“点”均为“数乘”或“四元数点乘”

12) 四元数转旋转矩阵

仿射变换旋转矩阵:
R = [ 1 − 2 y 2 − 2 z 2 2 x y − 2 w z 2 x z + 2 w y 2 x y + 2 w z 1 − 2 x 2 − 2 z 2 2 y z − 2 w x 2 x z − 2 w y 2 y z + 2 w x 1 − 2 x 2 − 2 y 2 ] R = \begin{bmatrix} 1 - 2y^2 - 2z^2 & 2xy - 2wz & 2xz + 2wy \\ 2xy + 2wz & 1 - 2x^2 - 2z^2 & 2yz - 2wx \\ 2xz - 2wy & 2yz + 2wx & 1 - 2x^2 - 2y^2 \end{bmatrix} R= 12y22z22xy+2wz2xz2wy2xy2wz12x22z22yz+2wx2xz+2wy2yz2wx12x22y2

齐次坐标旋转矩阵:
T = [ 1 − 2 y 2 − 2 z 2 2 x y − 2 w z 2 x z + 2 w y 0 2 x y + 2 w z 1 − 2 x 2 − 2 z 2 2 y z − 2 w x 0 2 x z − 2 w y 2 y z + 2 w x 1 − 2 x 2 − 2 y 2 0 0 0 0 1 ] T = \begin{bmatrix} 1 - 2y^2 - 2z^2 & 2xy - 2wz & 2xz + 2wy & 0 \\ 2xy + 2wz & 1 - 2x^2 - 2z^2 & 2yz - 2wx & 0 \\ 2xz - 2wy & 2yz + 2wx & 1 - 2x^2 - 2y^2 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} T= 12y22z22xy+2wz2xz2wy02xy2wz12x22z22yz+2wx02xz+2wy2yz2wx12x22y200001

12)旋转矩阵转四元数

对于以下仿射变换旋转矩阵
R = [ R 11 R 12 R 13 R 21 R 22 R 23 R 31 R 32 R 33 ] R = \begin{bmatrix} R_{11} & R_{12} & R_{13} \\ R_{21} & R_{22} & R_{23} \\ R_{31} & R_{32} & R_{33} \end{bmatrix} R= R11R21R31R12R22R32R13R23R33
或在齐次坐标下的旋转矩阵
T = [ R 11 R 12 R 13 0 R 21 R 22 R 23 0 R 31 R 32 R 33 0 0 0 0 1 ] T = \begin{bmatrix} R_{11} & R_{12} & R_{13} & 0 \\ R_{21} & R_{22} & R_{23} & 0 \\ R_{31} & R_{32} & R_{33} & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} T= R11R21R310R12R22R320R13R23R3300001

都可以按以下方式获取四元数的四个部分
Q = { w = 1 + R 11 + R 22 + R 33 x = R 32 − R 23 4 w y = R 13 − R 31 4 w z = R 21 − R 12 4 w Q = \begin{cases} w = \sqrt{1 + R_{11} + R_{22} + R_{33}} \\ x = \frac{R_{32} - R_{23}}{4w} \\ y = \frac{R_{13} - R_{31}}{4w} \\ z = \frac{R_{21} - R_{12}}{4w} \end{cases} Q= w=1+R11+R22+R33 x=4wR32R23y=4wR13R31z=4wR21R12

12)四元数叉乘

一般来讲四元数叉乘并没有意义,只是在某些特定的算法或情景中定义的全新的运算法则,而不具备广泛的实用性。可以根据需求调整叉乘的定义,这里不再给出相关信息。

2.运算律与定义

1).单位元(Identity)

规定单位元为
Q i d e n t i t y = ⟨ 0 , 0 , 0 , 1 ⟩ Q_{identity} = \langle 0, 0, 0, 1 \rangle Qidentity=0,0,0,1

2).单位四元数

规定模长(Norm)为1为单位四元数

3).逆元

每个非零四元数都有一个逆元,相乘结果为单位元,注意前置条件
Q ⋅ Q − 1 = Q i d e n t i t y Q \cdot Q^{-1}= Q_{identity} QQ1=Qidentity

4).结合律

( Q 1 ⋅ Q 2 ) ⋅ Q 3 = Q 1 ⋅ ( Q 2 ⋅ Q 3 ) (Q_1 \cdot Q_2) \cdot Q_3 = Q_1 \cdot (Q_2 \cdot Q_3) (Q1Q2)Q3=Q1(Q2Q3)

5).乘法交换率不成立

Q 1 ⋅ Q 2 ≠ Q 2 ⋅ Q 1 Q_1 \cdot Q_2 \neq Q_2 \cdot Q_1 Q1Q2=Q2Q1

6).乘法封闭性

四元数乘法是封闭的,也就是说,两个四元数的乘积仍然是四元数。

7).无万向节锁问题

"万向锁问题"是指在使用欧拉角来描述旋转时,存在一个特定情况,其中三个旋转轴的旋转角度不能独立地表示物体的方向,因为它们会相互影响。这会导致旋转的奇异性,使得无法准确描述物体的姿态。
四元数和旋转矩阵均无万向锁问题,但是矩阵需要占据很大的运算空间,有高昂的代价,而四元数解决这一问题的代价是升维,使得旋转失去了直观性和简单性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1109724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java击球小游戏运行代码

创建一个图形化的小游戏通常需要使用Java图形库,例如Swing或JavaFX。下面是一个使用JavaFX创建的简单的图形化小游戏示例,其中一个小球会在窗口内移动,你需要点击小球以增加得分: import javafx.application.Application; import…

淘宝开放平台 API 获取淘宝天猫店铺订单接口

业务场景:作为全球最大的 B2C 电子商务平台之一,淘宝(天猫)平台提供了丰富的商品资源,吸引了大量的全球买家和卖家。为了方便开发者接入淘宝平台,淘宝平台提供了丰富的 API 接口,其中商品详情接…

2023年【北京市安全员-A证】试题及解析及北京市安全员-A证证考试

题库来源:安全生产模拟考试一点通公众号小程序 北京市安全员-A证试题及解析是安全生产模拟考试一点通总题库中生成的一套北京市安全员-A证证考试,安全生产模拟考试一点通上北京市安全员-A证作业手机同步练习。2023年【北京市安全员-A证】试题及解析及北…

【大数据开发技术】实验06-SequenceFile、元数据操作与MapReduce单词计数

文章目录 SequenceFile、元数据操作与MapReduce单词计数一、实验目标二、实验要求三、实验内容四、实验步骤附:系列文章 SequenceFile、元数据操作与MapReduce单词计数 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS SequenceFile读写操作掌握Map…

Redis:用BitMap实现用户签到

BitMap 我们针对签到功能完全可以通过mysql来完成,比如说以下这张表 用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量为 1亿条 每签到一次需要使用(8 8…

某全球领先的芯片供应商:优化数据跨网交换流程,提高安全管控能力

1、客户介绍 某全球领先的芯片供应商,成立于2005年,总部设于北京,在国内上海、深圳、合肥等地及国外多个国家和地区均设有分支机构和办事处,致力于为客户提供更优质、便捷的服务。 2、建设背景 该公司基于网络安全管理的需求&am…

Qt中纯C++项目发布为dll的方法(超详细步骤)

目录 一般创建方法导出普通函数的方法&调用方法导出类及其成员函数的方法&调用方法 众所周知,我们可以将C项目中的类以及函数导出,形成 .dll 文件,以供其他程序使用,下面将说明Qt环境下的使用方法。 首先创建共享库&am…

吐血整理,服务端性能测试中间件-项目集成redis实战,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Linux下Redis安装…

《小狗钱钱》阅读笔记(六)

目录 幼儿园最开始的作用不是让小朋友受教育,而是为了提供一个场所让小朋友免于被剥削 弗里德里希福禄贝尔 早期 其实那些有大作为的人,你看到他们的时候,你看,大多小时候都是受到过很多挫折的,我不是说&#xff0c…

安装thinkphp6并使用多应用模式,解决提示路由不存在解决办法

1. 安装稳定版tp框架 composer create-project topthink/think tptp是安装完成的目录名称 ,可以根据自己需要修改。 如果你之前已经安装过,那么切换到你的应用根目录下面,然后执行下面的命令进行更新: composer update topthin…

HTML5+CSS3小实例:网页底部间隔波浪动画特效

实例:网页底部间隔波浪动画特效 技术栈:HTML+CSS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content…

算法第一关-黄金挑战

环形链表 描述 : 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 LeetCode 141.环形链表 : 141. 环形链表 牛客 BM6 判断链表中是否有 : 分析 : 用HashS…

接口测试实战讲解

本次实战&#xff0c;我是从网上找的接口测试项目&#xff0c;该项目提供了详细的接口文档&#xff0c;我们可以通过学习接口文档来设计测试用例&#xff0c;最后再使用Jmeter进行实战。总的来说&#xff0c;这个项目很适合用来练手&#xff0c;项目网址&#xff1a;https://ww…

Python接口自动化 —— Json 数据处理实战(详解)

简介 上一篇说了关于json数据处理&#xff0c;是为了断言方便&#xff0c;这篇就带各位小伙伴实战一下。首先捋一下思路&#xff0c;然后根据思路一步一步的去实现和实战&#xff0c;不要一开始就盲目的动手和无头苍蝇一样到处乱撞&#xff0c;撞得头破血流后而放弃了。不仅什么…

自学(黑客技术)——网络安全高效学习方法

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学&#xff1f;如何学&#xff1f; 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c…

八股文学习四(kafka)

一. 消息中间件kafka (1)基本概念 (2) 生产者 生产者将消息发送到topic中去&#xff0c;同时负责选择将message发送到topic的哪一个partition中。通过round-robin做简单的负载均衡。也可以根据消息中的某一个关键字来进行区分。通常第二种方式使用的更多。 (3)消费者 消费模…

this指向输出题

&#x1f197;先简简单单来看一个小代码 var name "windowsName"console.log(this.name, 222)function fn() {var name Cherryconsole.log(this.name, 444);innerFunction()console.log(this.name, 333)function innerFunction() {console.log(this.name, 111)}}fn…

8年测试老鸟总结,APP自动化测试思路整理,跟着步骤快速撸码...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、开发语言选择 …

STM32 Debug查看const变量 在flash中存储地址

1.下面const数组&#xff0c;存储在flash中&#xff0c;通过map文件获取CH_value的数组首地址0x080014c8&#xff0c;或者debug中在函数中添加CH_value到Memory&#xff0c;获取数组在flash中存储的位置。

C++对象模型(17)-- 构造函数语义学:成员初始化列表

1、必须用初始化列表的场景 &#xff08;1&#xff09;成员变量是引用类型&#xff0c;必须在初始化列表中初始化。 &#xff08;2&#xff09;成员变量是const类型&#xff0c;必须在初始化列表中初始化。 &#xff08;3&#xff09;如果类继承自一个父类&#xff0c;并且父…