利用旋转矩阵简便旋转二位矢量(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 ...

旋转矩阵与四元数互算

  • 2015年04月23日 11:11
  • 12KB
  • 下载

探讨:向量(方向)之间的插值-四元数法VS.旋转矩阵法的性能比较

问题: 3D空间中,在等长度的两个交角为theta的向量v1(x1,y1,z1),v2(x2,y2,z2)之间进行球面线性插值。 实例: 做一个行星在围绕太阳等速旋转的动画,假设只采样到旋转过程...

由旋转矩阵求欧拉角

  • 2015年09月06日 20:40
  • 93KB
  • 下载

旋转矩阵到四元数源代码

  • 2010年02月26日 17:24
  • 227B
  • 下载

旋转矩阵(Rotate Matrix)的性质分析

学过矩阵理论或者线性代数的肯定知道正交矩阵(orthogonal matrix)是一个非常好的矩阵,为什么这么说?原因有一下几点: 正交矩阵每一列都是单位矩阵,并且两两正交。最简单的正交矩阵就是...

旋转矩阵的简单实现

  • 2011年12月01日 17:50
  • 28KB
  • 下载

四元数运算与旋转矩阵库

  • 2015年10月24日 13:26
  • 70KB
  • 下载

关于旋转矩阵的表示

//ps: x,y,z,w 分别是四元素的四个值。稍微修改下就可以用。       // 由旋转矩阵创建四元数       inline CQuaternion(const _Matrix4& m...
  • wqhua
  • wqhua
  • 2014年05月18日 17:11
  • 386
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用旋转矩阵简便旋转二位矢量(SDacm4A题解)
举报原因:
原因补充:

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