跳到主要内容

空间向量解算偏移

2025-07-04 to 2025-07-08

寒假干(拖)到暑假,从代数暴力求解偏移到几何运算计算,再到这章的用空间向量解算,见证了我高中数学的学习路程:

初中知识==>二分法==>平面向量==>空间向量==>线性代数(超前学习)

思路

我的目的是解出偏移,那可以通过先测出四个不同位置的静止加速度,绘制在了空间中:


实际这四个点的位置向量 pi\bm{p}_i 是偏移向量加真实向量 ti\bm{t}_i,即 pi=o+ti\bm{p}_i=\bm{o}+\bm{t}_i,演示:


四个真实向量 ti\bm{t}_i 实际是模长等于当地重力加速度的向量,所以四个向量共起点 OO,模长相等,就意味着这四点共球,虽然要排除共面的情况,但传感器数据不是数学老师出题,不可能会有共面情况的,而且一般数据会要求取四个位置相差较大的四点。所以最终四个点都会在以偏移向量 o\bm{o} 终点为球心,当地重力加速度为半径的球上。


计算

已从传感器读取四组加速度 p1, p2, p3, p4\bm{p}_1,\ \bm{p}_2,\ \bm{p}_3,\ \bm{p}_4,坐标表示为:

pi=(xi ,yi ,zi)\bm{p}_i=(x_i\ ,y_i\ ,z_i)

球的球心为 OO,半径 rrOO 的位置向量(偏移向量)为 o\bm{o},坐标表示:

O (Ox ,Oy ,Oz)o=(Ox ,Oy ,Oz)O\ (O_x\ ,O_y\ ,O_z)\\ \bm{o}=(O_x\ ,O_y\ ,O_z)

根据球的方程可列式:

(xiOx)2+(yiOy)2+(ziOz)2=r2   (i{1 ,2 ,3 ,4})(x_i-O_x)^2+(y_i-O_y)^2+(z_i-O_z)^2=r^2\ \ \ (i \subseteq \{1\ ,2\ ,3\ ,4\})

因为

pi2=pj2=r2|\bm{p}_i|^2=|\bm{p}_j|^2=r^2

所以

(xiOx)2+(yiOy)2+(ziOz)2=(xjOx)2+(yjOy)2+(zjOz)2(x_i-O_x)^2+(y_i-O_y)^2+(z_i-O_z)^2=(x_j-O_x)^2+(y_j-O_y)^2+(z_j-O_z)^2

化简:

2(xjxi)Ox+2(yjyi)Oy+2(zjzi)Oz=(xj2xi2)+(yj2yi2)+(zj2zi2)2(x_j-x_i)O_x+2(y_j-y_i)O_y+2(z_j-z_i)O_z=(x_j^2-x_i^2)+(y_j^2-y_i^2)+(z_j^2-z_i^2)

i=1, j=2,3,4i=1,\ j=2,3,4,得三个线性方程:

{a2Ox+b2Oy+c2Oz=d2a3Ox+b3Oy+c3Oz=d3a4Ox+b4Oy+c4Oz=d4{ai=2(xix1)bi=2(yiy1)ci=2(ziz1)di=(xi2x12)+(yi2y12)+(zi2+z12)\left\{\begin{matrix} a_2O_x+b_2O_y+c_2O_z=d_2 \\ a_3O_x+b_3O_y+c_3O_z=d_3 \\ a_4O_x+b_4O_y+c_4O_z=d_4 \end{matrix}\right.\\ \\ \left\{\begin{matrix} a_i=2(x_i-x_1)\\ b_i=2(y_i-y_1)\\ c_i=2(z_i-z_1)\\ d_i=(x_i^2-x_1^2)+(y_i^2-y_1^2)+(z_i^2+z_1^2) \end{matrix}\right.\\ \\

方程组表示为矩阵形式:

Ax=bA=[a2b2c2a3b3c3a4b4c4], x=[OxOyOz], b=[d2d3d4]\bold{Ax}=\bold{b}\\ \bold{A}=\begin{bmatrix} a_2 & b_2 & c_2\\ a_3 & b_3 & c_3\\ a_4 & b_4 & c_4 \end{bmatrix},\ \bold{x}=\begin{bmatrix} O_x\\ O_y\\ O_z \end{bmatrix},\ \bold{b}=\begin{bmatrix} d_2\\ d_3\\ d_4 \end{bmatrix}
Not note

矩阵没学完,等我学完再来
2025-07-08 20:40