利用旋转矩阵简便旋转二位矢量(SDacm4A题解)

原创 2015年03月25日 21:43:54

题目原意是给你A,B两点坐标,让你求出逆时针的第三点C的坐标。

我这里运用旋转矩阵的方法,大大缩减代码量及code难度。

#include<stdio.h>
#include<math.h>
int main()
{
    double x1,x2,y1,y2,ansx,ansy;
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
        double newx2,newy2;
        newx2=x2-x1;
        newy2=y2-y1;
        ansx=newx2*0.5-sqrt(3.0)/2.0*newy2;
        ansy=newx2*sqrt(3.0)/2.0+newy2*0.5;
        printf("(%.2lf,%.2lf)\n",(ansx+x1),(ansy+y1));
    }
    return 0;
}

首先将A点平移到坐标原点,B点坐标也按A点的平移大小进行平移,然后将B点以A点为中心逆时针旋转60.

在二维空间中,旋转可以用一个单一的角 θ 定义。作为约定,正角表示逆时针旋转。把笛卡尔坐标列向量关于原点逆时针旋转θ 的矩阵是:
该矩阵的逆矩阵为:
表示较原来反方向旋转θ ,也即顺时针旋转θ
注意,坐标表示成2*1规模的矩阵,展开就OK了。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

剑指offer 面试题20:顺时针打印矩阵及其变形(LeetCode54. Spiral Matrix旋转矩阵) 题解

剑指offer 面试题20:顺时针打印矩阵 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)