平面直角坐标变换

  平移坐标变换

    定义:若二平面直角坐标系{Oij}{O′;i′,j}满足i=i′,j=j′,则坐标系{O′;i′,j}可看成是由{Oij}经过平移得到的,称由坐标系{Oij}到坐标系{O′;i′,j}的变换为平移坐标变换

       平移变换公式

       设平面上一点M在新系{O′;i′,j}与旧系{Oij}下的坐标分别为

      x′,y′),(x,y),而O′在旧系下的坐标为(a,b),则

       xi+yj=  = + =ai+bj+xi+yj

            =ai+bj+xi+yj=a+x′)i+b+y′)j

           ——平移坐标变换公式

  旋转坐标变换

 定义:若二坐标系{Oij}{O′;i′,j}满足OO′,另∠(ij′)=θ

        则坐标系{O′;i′,j}可看成是由坐标系{Oij}O旋转θ角得到的,称由{Oij}{O′;i′,j}的变换为旋转坐标变换

       旋转变换公式

由于∠(ii′)=0,∴∠(ij′)= +θ

   i=cosθi+sinθjj=cos +θ)i+sin +θ)j=-sinθi+cosθj

   xi+yj= = =xi+yj=x′(cosθi+sinθj+y′(-sinθi+cosθj

          =xcosθ-ysinθ)i+xsinθ+ycosθ)j

    

   x,y表示x′,y′,有

       

   一般坐标变换:

  称由坐标系{Oij}得坐标系{O′;i′,j}的变换为一般坐标变换

: 一般坐标变换可分两步来完成,首先将坐标系{Oij}平移成

   {O′;i′,j},再将此坐标系绕O′旋转θ=∠(ii′)角,即得

   {O′;i′,j}

   一般变换公式

   设平面上任一点关于旧系{Oij}与新系{O′;i′,j}的坐标分别为(x,y

   x′,y′),关于{O′;ij}的坐标为(x″,y″),而O′在{Oij}下的坐标为(a,b),则

         

   

   

   x,y表示x′,y′,有

   

:上述坐标变换亦可先旋转,再平移而完成。

  :设有二坐标系{Oij}{O′;i′,j},且知i′,j′所在直线在坐标系{Oij}下的方程为 x+ y+ =0 x+ y+ =0,试求坐标变换公式。

  :设平面上任一点P在旧系与新系下的坐标分别为(x,y)(x′,y′)

     Pi′所在直线的距离用新坐标表示为

    y′∣=

    从而  y=±

    同理  x=±

         

   注:上式±号的选取应注意到

      ± =±  

   i′所在直线为2x-y+3=0j′所在直线为x+2y-2=0,则坐标变换公式为

         

  坐标变换下,二次曲线方程的系数的变化规律:

  1 在平移下

    设将坐标原点平移O′( ),则平移公式为

     

   则在新系{O′;ij} x+ ²+2 +x′)( +y′)+ +y′)²

                       +2 x+ +2 y+ + =0

    若记 x′,y′)≡Fx+ y+

                      = x²+2 xy+ y²+2 x+2 + ′,则 =           = + + =F1

       =           =a21 + + =F2

      =           = ²+2 + ²+2 +2 +

                               =F

   可见:在平移变换下,二次曲线方程的

    1)二次项系数不变;

    2)一次项系数变为 ), );

    3)常数项变为F

   从而若取 )为二次曲线Fxy=0的中心,则在新系下,方程中将无一次项。

 2 在旋转变换下,设旋转角为θ,则平面上一点在旧系与新系下的坐标(x,y)(x′,y′)间满足

  

   ∴二次曲线在新系下的方程为

    F′(x′,y′)=Fxcosθ-ysinθ,+xsinθ+ycosθ)

     = xcosθ-ysinθ)²+2 xcosθ-ysinθ)(+xsinθ+ycosθ)+

       +xsinθ+ycosθ)²+2 xcosθ-ysinθ)

+2 +xsinθ+ycosθ)+   =0

若记F′(x′,y′)≡ x′²+2 xy+ y′²+2 x+2 y+  

 可见,在旋转变换下,二次曲线方程

  1)二次项系数一般可变,但新系下方程的二次项系数仅与旧系下方程的二次项系数及旋转角θ有关;

  2)一次项系数一般也可边,但新方程中有一次项〈═〉旧方程有一次项;

  3)常数项不变。

  的公式表达式可见,若选取α角,使

 

    ceg2θ=

  作旋转变换,则新方程中将不会交叉乘积项。

相关资料请留意http://blog.csdn.net/begtostudy 的更新。

 
以下是基于四参数相似变换模型的二维平面直角坐标转换的Python代码示例: ```python import numpy as np def similarity_transform(src_pts, dst_pts): """ 基于四参数相似变换模型的二维平面直角坐标转换 :param src_pts: 源点坐标数组,形状为(N, 2) :param dst_pts: 目标点坐标数组,形状为(N, 2) :return: 变换矩阵M,形状为(3, 3) """ # 将点坐标转换为齐次坐标 src_pts = np.hstack((src_pts, np.ones((len(src_pts), 1)))) dst_pts = np.hstack((dst_pts, np.ones((len(dst_pts), 1)))) # 计算变换矩阵 A = np.zeros((2 * len(src_pts), 4)) b = np.zeros((2 * len(src_pts), 1)) for i in range(len(src_pts)): A[2 * i, 0] = src_pts[i, 0] A[2 * i, 1] = -src_pts[i, 1] A[2 * i, 2] = 1 A[2 * i + 1, 0] = src_pts[i, 1] A[2 * i + 1, 1] = src_pts[i, 0] A[2 * i + 1, 3] = 1 b[2 * i, 0] = dst_pts[i, 0] b[2 * i + 1, 0] = dst_pts[i, 1] x, _, _, _ = np.linalg.lstsq(A, b, rcond=None) M = np.array([[x[0, 0], -x[1, 0], x[2, 0]], [x[1, 0], x[0, 0], x[3, 0]], [0, 0, 1]]) return M ``` 其中,`src_pts`和`dst_pts`分别是源点坐标数组和目标点坐标数组,形状均为(N, 2),表示N个点在二维平面上的直角坐标。函数返回的是一个变换矩阵M,形状为(3, 3),可以用于将源点坐标转换到目标点坐标。具体使用方法可以参考下面的示例: ```python # 定义源点坐标和目标点坐标 src_pts = np.array([[0, 0], [1, 0], [0, 1], [1, 1]]) dst_pts = np.array([[1, 2], [3, 2], [1, 4], [3, 4]]) # 计算变换矩阵 M = similarity_transform(src_pts, dst_pts) # 测试变换矩阵 test_pts = np.array([[0.5, 0.5], [0.2, 0.8], [0.8, 0.2]]) test_pts_transformed = np.dot(np.hstack((test_pts, np.ones((len(test_pts), 1)))), np.transpose(M)) test_pts_transformed = test_pts_transformed[:, :2] / test_pts_transformed[:, 2:] print(test_pts_transformed) ``` 在上面的示例中,定义了源点坐标和目标点坐标,然后调用`similarity_transform`函数计算出变换矩阵M。最后,我们测试了变换矩阵M对测试点进行变换的效果,并打印出了变换后的坐标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值