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

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

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

  • 写回答

3条回答 默认 最新

  • _GX_ 2022-02-07 20: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月16日
  • 已采纳回答 2月8日
  • 创建了问题 2月7日

悬赏问题

  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上