计算绕原点旋转某角度后的点的坐标

2024-06-24 14:18

本文主要是介绍计算绕原点旋转某角度后的点的坐标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题:

A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示

方法一:

设 OA 向量和x轴的角度为 alpha ,

那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。

使用圆的参数方程来表示点坐标。A的坐标可以表示为:

\[\left\{ {\begin{array}{*{20}{c}}
  {x = r \cdot \cos \alpha } \\ 
  {y = r \cdot \sin \alpha } 
\end{array}} \right.\]

A1的坐标可以表示为(带入A点坐标进行化简)

\[\left\{ {\begin{array}{*{20}{c}}
  {{x_1} = r \cdot \cos (\alpha  - \theta ) = r \cdot (\cos \alpha \cos \theta  + \sin \alpha \sin \theta ) = x \cdot \cos \theta  + y \cdot \sin \theta } \\ 
  {{y_1} = r \cdot \sin (\alpha  - \theta ) = r \cdot (\sin \alpha \cos \theta  - \cos \alpha \sin \theta ) =  - x \cdot \sin \theta  + y \cdot \cos \theta } 
\end{array}} \right.\]

写成矩阵形式:

\[\left( {\begin{array}{*{20}{c}}
  {\cos \theta }&{\sin \theta } \\ 
  { - \sin \theta }&{\cos \theta } 
\end{array}} \right)\left( {\begin{array}{*{20}{c}}
  x \\ 
  y 
\end{array}} \right) = \left( {\begin{array}{*{20}{c}}
  {{x_1}} \\ 
  {{y_1}} 
\end{array}} \right)\]


方法二:

点顺时针转,相当于 点不变,让坐标轴逆指针转。


坐标为(x,y),可以看成: 

x值是点表示的向量,与x正轴单位向量的点积。

y值是点表示的向量,与y正轴单位向量的点积。

即在x轴和y轴上,带方向的投影长度。


所以问题等价的转化为: 坐标轴逆时针转了theta,求点在新的坐标系下的坐标。


新的坐标系的x正轴单位向量为(用原来的坐标系来表示)

\[(\cos \theta ,\sin \theta )\]

新的坐标系的y正轴单位向量为

\[( - \sin \theta ,\cos \theta )\]


所以

A点新的坐标系下的x值 x1= 点积(A点坐标,新坐标系x正轴单位向量)

A点新的坐标系下的y值 y1= 点积(A点坐标,新坐标系y正轴单位向量)

\[\left\{ {\begin{array}{*{20}{c}}
  {{x_1} = x \cdot \cos \theta  + y \cdot \sin \theta } \\ 
  {{y_1} =  - x \cdot \sin \theta  + y \cdot \cos \theta } 
\end{array}} \right.\]

\[\left( {\begin{array}{*{20}{c}}
  {\cos \theta }&{\sin \theta } \\ 
  { - \sin \theta }&{\cos \theta } 
\end{array}} \right)\left( {\begin{array}{*{20}{c}}
  x \\ 
  y 
\end{array}} \right) = \left( {\begin{array}{*{20}{c}}
  {{x_1}} \\ 
  {{y_1}} 
\end{array}} \right)\]


总结:

顺时针旋转矩阵为:

\[\left( {\begin{array}{*{20}{c}}
  {\cos \theta }&{\sin \theta } \\ 
  { - \sin \theta }&{\cos \theta } 
\end{array}} \right)\]


逆时针旋转矩阵为:(theta 变成 -theta带入即可)

\[\left( {\begin{array}{*{20}{c}}
  {\cos \theta }&{ - \sin \theta } \\ 
  {\sin \theta }&{\cos \theta } 
\end{array}} \right)\]


这篇关于计算绕原点旋转某角度后的点的坐标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090380

相关文章

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维,在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现:坐标校正,我们如何使漫无目的鼠标点击变得有序化和可控化呢? 目录 一、从鼠标监听到获取坐标 1.MouseListener和MouseAdapter 2.mousePressed方法 二、坐标校正的具体实现方法 1.关于fillOval方法 2.坐标获取 3.坐标转换 4.坐

KLayout ------ 旋转物体90度并做平移

KLayout ------ 旋转创建的物体 正文 正文 前段时间,有个小伙伴留言问我,KLayout 中如何旋转自己创建的物体,这里特来说明一下。 import pyapoly = pya.DPolygon([pya.DPoint(0, 0), pya.DPoint(0, 5), pya

【云计算 复习】第1节 云计算概述和 GFS + chunk

一、云计算概述 1.云计算的商业模式 (1)软件即服务(SaaS) 有些景区给游客提供烧烤场地,游客需要自己挖坑或者砌烧烤台,然后买肉、串串、烧烤。 (2)平台即服务(PaaS) 有些景区给游客提供烧烤场地,同时搭建好烧烤台,游客只需要自己带食材和调料、串串、烧烤。 (3)基础设施即服务(IaaS) 有些景区给游客提供烧烤场地,同时搭建好烧烤台,还有专门的厨师来烧烤,用户不需要关心前面的所有

剑指offer(C++)--左旋转字符串

题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! class Solution {public:string LeftRotateStri

陀螺仪LSM6DSV16X与AI集成(8)----MotionFX库解析空间坐标

陀螺仪LSM6DSV16X与AI集成.8--MotionFX库解析空间坐标 概述视频教学样品申请源码下载开启CRC串口设置开启X-CUBE-MEMS1设置加速度和角速度量程速率选择设置FIFO速率设置FIFO时间戳批处理速率配置过滤链初始化定义MotionFX文件卡尔曼滤波算法主程序执行流程lsm6dsv16x_motion_fx_determin欧拉角简介演示 概述 本文将探讨

OSG数学基础:坐标系统

坐标系是一个精确定位对象位置的框架,所有的图形变换都是基于一定的坐标系进行的。三维坐标系总体上可以分为两大类:左手坐标系和右手坐标系。常用的坐标系:世界坐标系、物体坐标系和摄像机坐标系。 世界坐标系 世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架。从另一方面说,能够用世界坐标系来描述其他坐标系的位置,而不能用更大的、外部的坐标系来描述世界坐标系。世界坐标系也被广泛地

标准分幅下的图幅号转换成经纬度坐标【原理+源代码】

最近要批量的把标准分幅下的图幅号转换成经纬度坐标,所以这两天写了个程序来搞定这件事情。 先举个例子说明一下这个程序的作用。 例如:计算出图幅号I50G021040的经纬度范围,即最大经度、最小经度、最大纬度、最小纬度。 运用我编写的这个程序,可以直接算出来,这个图幅号的经纬度范围,最大经度为115.3125°,最小经度为115.25°,最大纬度为31.167°,最小纬度为31.125°。

什么是dB?dBm、dBc、dBi、dBd怎么计算,有什么区别?

什么是dB?dBm、dBc、dBi、dBd怎么计算,有什么区别? 引言 在电子工程、通信和音频领域,dB(分贝)是一个常见的术语。许多人刚接触时可能会感到困惑,因为它不仅仅是一个简单的单位,还有多种不同的形式,如dBm、dBc、dBi和dBd。这篇文章将详细解释这些概念,并介绍如何计算它们,帮助初学者更好地理解和应用。 什么是dB? dB,即分贝,是一种表示两个数值比值的对数单位。分贝的基

【智能优化算法改进策略之局部搜索算子(五)—自适应Rosenbrock坐标轮换法】

1、原理介绍 作为一种有效的直接搜索技术,Rosenbrock坐标轮换法[1,2]是根据Rosenbrock著名的“香蕉函数”的特点量身定制的,该函数的最小值位于曲线狭窄的山谷中。此外,该方法是一种典型的基于自适应搜索方向集的无导数局部搜索技术。此法于1960年由Rosenbrock提出,它与Hooke-Jeeves模式搜索法有些类似,但比模式搜索更为有效。每次迭代运算分为两部分[3]: 1)

php字符串计算汉字、中英文数字个数

$str = '123abcDEF测试的事发地点';$length = strlen(preg_replace('/[\x00-\x7F]/', '', $str));$arr['en'] = strlen( $str) - $length; //(非中文)$arr['cn'] = intval($length / 3); // 编码GBK,除以2 (中文)print_r($