有一说一的泡泡 2022-02-07 11:12 采纳率: 50%
浏览 57
已结题

矩阵以矩阵中心点为坐标原点旋转任意角度

简单点说,我有一个NN的二维矩阵,假如是2828的矩阵,我想让这个矩阵以矩阵的中心点(X=14,Y=14)为中心旋转任意角度,请问C语言的话,要怎么做呢~

  • 写回答

3条回答 默认 最新

  • _GX_ 2022-02-07 12:36
    关注

    假设旋转角度为thetatheta的取值范围为-180<=theta<=180,当theta>0时表示逆时针选择,当theta<0时表示顺时针旋转,那么旋转矩阵R

    img

    对于一个NxN阶矩阵,其中心点C坐标为(N/2, N/2),假设任意元素的坐标P1(x1,y1),旋转旋转后的坐标P2(x2,y2),那么P2 = R(P1-C)+C

    计算出旋转后的坐标值后,可以把坐标值向最接近的整数取整(即四舍五入)
    旋转后矩阵大小的问题:
    如果旋转后矩阵任然保持和原来矩阵一样大小,那么可以舍弃那些旋转后坐标值在[0,N)之外的元素,根据坐标映射拷贝矩阵元素到新矩阵中,而没有被映射到的元素应该事先初始化为一个给定值,比如0。
    如果想保留所有的旋转后的元素,那么旋转后的矩阵大小可以根据原矩阵四个角点的坐标经过上面旋转计算得到的坐标值的差值得出。还要再做一次坐标映射,根据中心点不动,矩阵原点(左上角)从原矩阵挪到新矩阵。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 已采纳回答 2月8日
  • 创建了问题 2月7日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部