线性代数之仿射变换

仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间.--维基百科

 

上面是解释不是那么好理解,举个简单的例子:

例如:你家的坐标在平面地图上是一个点,这个点的坐标是(0,0),在你家正前的有面旗,旗的坐标(100,0),这时一位农民伯伯在旗杆下栓了一头牛(民以食为天),栓牛的绳子长度3米时,这时想知道这头牛相对你家这个点能活动的坐标范围。
要接这个问题,用初等数学也可以解,但算起来会十分的麻烦,初等数学的常常是把X,Y的坐标独立起来计算。而使用线性代数就很好求解了。

解:这头的相对旗的移动角度是0-360°,我们先以旗为相对原点计算牛的可以移动的坐标
        升速速绳子长度;θ牛刚刚被栓上时的角度


    X =lcosθy

    Y =1SINθ


    牛现在还是动了,牛动的方向是从飞机上看地面逆时针转动β

x` = l cos(θ+β)= l(cosθcosβ-sinθsinβ)=xcosβ- ysinβw

y`= l sin(θ+β)= 1(cosθsinβ+sinθcosβ)=xsinβ+ycosβ
    
用行列式表达

    化简就是R(θ)[X,Y] = \ begin {bmatrix} cos \ beta&-sin \ beta \\ sin \ beta&cos \ beta \ end {bmatrix} \ begin {bmatrix} x \\ y \ end {bmatrix}


    矩阵的乘法第一个行的每个元素依次乘以第二个矩阵对应列的元素。
    如果刻意不会请自行_ _百度
    
到现在为止旋转好了,现在问题来了,这个化简的确定了,如何将现有的坐标转换到你家所在的坐标系。
很简单,将旗杆的点平移到你家的点上,平移就非常简单了,就是简单的XY将上相应的系数
\\ X_ {A} = X + 0;  \\ Y_ {A} = Y-100;

转换为矩阵\ begin {bmatrix} 1&0&0 \\ 0&1&-100 \\ 0&0&1 \ end {bmatrix}\ begin {bmatrix} x \\ y \\ 1 \ end {bmatrix} = \ begin {bmatrix} x_ {a} \\ y_ {a} \\ 1 \ end {bmatrix}

为什么变成三维矩阵了?为了方便计算,引入齐次坐标。

什么是齐次矩阵?用的n + 1维坐标表示Ñ维坐标。就是为了方便计算,可以这一任务,线性代数不是本事就存在的定量,而是为了计算的方便,人为规定一种简化计算的方法。

平移是3×3的矩阵,旋转是2×2矩阵,又没有办法把两者合并起来,一步计算到位,当然有,就是使用齐次坐标,把二维的旋转转换到3维,实际上所有的高维度在低维度上都是有投影的,这样,我们把二维的矩阵增加一个三维的单位矩阵,这样就有了

多么美妙的公式啊,以后计算一个点的放射变换在2维度平面直接代入上面公式就确定,这样牛的位置和范围也可以计算出来了

飞机上向下看的点很重要,上帝视角是在第三个维度上才能看到,至今没有发现外星人,也许正如“三体”中外星人在高维度上俯瞰三维空间的我们,那天看我们不爽就来个降维打击,扯远了。

飞机上看实际就是在XY以外的ž轴上看XY所在平面上的点的运动。

同理在有XY平面就有XZ,YZ平面,那他们的放射变换是如何的呢?

绕X轴逆时针旋转θ角:

绕ÿ轴逆时针旋转θ角

绕ž轴旋转角的旋转矩阵为: 


죽을래?平移如何加上去?

这里现在就是在三维空间上的仿射变换了,就得再加一个维度了

有点懒去隔壁偷了一张图片,还是注明一下吧

关于3D坐标变换的数学原理_Sonictl的博客-CSDN博客_三维坐标变换原理

隔壁写的那个机械臂坐标计算的例子非常好,3D坐标的转换本质上和二维平面的放射变换是相同的。

结尾就不写这头你家楼下的牛能活动的范围了,公式都给出来了,随便编个程序实现一下就可以了

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值