在平面中,一个点绕任意点旋转θ度后的点的坐标

假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转a角度后的新的坐标设为(x0, y0),有公式:
x0= (x - rx0)*cos(a) - (y - ry0)*sin(a) + rx0 ;
y0= (x - rx0)*sin(a) + (y - ry0)*cos(a) + ry0 ;
一下是对这两条公式的证明。

操作方法

  • 01

    证:设点(x0,y0)到点(rx0,ry0)的距离为La,点(x,y)到点(rx0,ry0)的距离为Lb 则由图1可得:

  • 02

    ( x0 - rx0 ) / La = cos(a + b)                    -    ① ( x - rx0 ) / Lb = cos(b)                            -    ② La = Lb                                                        -    ③ ( y0 - ry0 ) / La = sin(a+b)                       -    ④ ( y - ry0 ) / Lb = sin(b)                             -    ⑤ 当cos(b),cos(a + b)不为零时,由①②③得: (x0- rx0)/ (x-rx0) = cos(a+b)/cos(b) (x0- rx0)/ (x-rx0) = (cos(a)cos(b)-sin(a)sin(b))/cos(b) (x0- rx0)/ (x-rx0) = cos(a) - sin(a)tan(b) (x0- rx0) = (cos(a) - sin(a)tan(b))(x - rx0) x0 = (x - rx0)cos(a) - sin(a)tan(b)(x - rx0) + rx0 x0 = (x - rx0)cos(a) - (y - ry0)sin(a) + rx0                        -    A 当sin(b),sin(a + b)不为零时,由③④⑤得: (y0 - ry0)/(y - ry0) = sin(a+b)/sin(b) (y0 - ry0)/(y - ry0) = (sin(a)cos(b) + cos(a)sin(b))/sin(b) (y0 - ry0)/(y - ry0) = sin(a)cos(b)/sin(b) + cos(a) y0 = (y - ry0)sin(a)cos(b)/sin(b) + (y - ry0)cos(a) + ry0 y0 = (y - ry0)sin(a)(x - rx0)/(y - ry0) + (y - ry0)cos(a) + ry0 y0 = (x - rx0)sin(a) + (y - ry0)cos(a) + ry0                        -    B ∴当cos(b),cos(a + b)不为零时A、B式成立

  • 03

    当cos(a+b)= 0时,即x0 = rx0,a+b = π/2+kπ(k>=0的自然数)如图2:

  • 04

    ∵cos(a+b)= 0 cos(a)cos(b) - sin(a)sin(b) = 0 tan(a) = 1/tan(b) sin(a)/cos(a) = (x - rx0)/(y - ry0) (x - rx0)cos(a) = (y - ry0)sin(a) 将x0 = rx0式代入A式也得 (x - rx0)cos(a) = (y - ry0)sin(a) ∴当cos(a+b)= 0时A式成立。

  • 05

    ∵tan(a) = (x - rx0)/(y - ry0) - ⑥ La = Lb = y0 - ry0 - ⑦ 由⑥得 (y - ry0)sin(a)/cos(a) = (x - rx0) (y - ry0)sin²(a)/cos(a) = (x - rx0)sin(a) (y - ry0)(1-cos²(a))/cos(a) = (x - rx0)sin(a) (y - ry0)(1/cos(a)-cos(a)) = (x - rx0)sin(a) (y - ry0)/cos(a)-(y - ry0)cos(a)) = (x - rx0)sin(a) (y - ry0)/cos(a) = (x - rx0)sin(a) +(y - ry0)cos(a)) - ⑧ 由⑦得 (y - ry0)/cos(a) = (x - rx0)/sin(a) = y0 - ry0 y0 = (y - ry0)/cos(a) + ry0 - ⑨ 将⑧代入⑨得: y0 = (x - rx0)sin(a) +(y - ry0)cos(a) + ry0 ∴当cos(a+b)= 0时B式成立。

  • 06

    当sin(a) = 0时,即a = π/2+ kπ(k>=0的自然数)如图3所示:

  • 07

    ∵sin(b) = (x0 - rx0)/La = (y - ry0)/Lb cos(b) = (y0 - ry0)/La = (x - rx0)/Lb 即: x0 - rx0 = y - ry0 y0 - ry0 = x - rx0 得: x0 = y - ry0 + rx0 y0 = x - rx0 + ry0 把a= π/2+ kπ代入A、B两式得: x0 = y - ry0 + rx0 y0 = x - rx0 + ry0 ∴当sin(a) = 0时,A、B两式也成立

  • 08

    当cos(b)= 0时,即x = rx0,b = π/2 +kπ(k>=0的自然数)如图4:

  • 09

    ∵La = Lb = y - ry0                                    -      ⑴ sin(a)= ( x0 - rx0 ) / La                      -      ⑵ cos(a)= ( y0 - ry0 ) / La                    -      ⑶ 由⑴⑵⑶得: x0 = (y - ry0)sin(a)+ rx0 y0 = (y - ry0)cos(a)+ ry0 将b = π/2+kπ 代入A、B两式也得 x0 = (y - ry0)sin(a)+ rx0 y0 = (y - ry0)cos(a)+ ry0 ∴当cos(b)= 0时,符合A、B两式。

  • 10

    当sin(a+b) = 0时,即y0 = ry0,a+b = π+kπ(k>=0的自然数),如图5所示:

  • 11

    ∵sin(a+b) = 0 ∴sin(a)cos(b) + cos(a)sin(b) = 0 tan(a) + tan(b) = 0 sin(a)/cos(a) + (y - ry0)/(x - rx0) = 0 (x - rx0)sin(a) + (y - ry0)cos(a) = 0 将y0 = ry0 代入B式也得: (x - rx0)sin(a) + (y - ry0)cos(a) = 0 ∴当sin(a+b)= 0时A式成立。

  • 12

    ∵tan(a) = tan(π- b) =  - tan(b) = -(y - ry0)/(x - rx0)         -     ⑷ La = Lb = rx0 - x0                                                        -     ⑸ 由 ⑷ 得: tan(a) = -(y - ry0)/(x - rx0) (x - rx0)sin(a)/cos(a) = -(y - ry0) (x - rx0)sin²(a)/cos(a) = -(y - ry0)sin(a) (x - rx0)(1-cos²(a))/cos(a) = -(y - ry0)sin(a) (x - rx0)/cos(a)-(x - rx0)cos(a) = -(y - ry0)sin(a) (x - rx0)/cos(a) = (x - rx0)cos(a)-(y - ry0)sin(a)               -     ⑹ 由 ⑸ 得: (y - ry0)/sin(b) = (x - rx0)/cos(b) = rx0 - x0 x0 = rx0 - (x - rx0)/cos(b) x0 = rx0 - (x - rx0)/cos(π-a) x0 = rx0 + (x - rx0)/cos(a)                                              -      ⑺ 把 ⑹ 代入 ⑺ 得: x0 = (x - rx0)cos(a)-(y - ry0)sin(a) + rx0 ∴当sin(a+b)= 0时B式成立。

  • 13

    综上所述,对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转a角度后的新的坐标设为(x0, y0),有公式: x0= (x - rx0)*cos(a) - (y - ry0)*sin(a) + rx0 ;    y0= (x - rx0)*sin(a) + (y - ry0)*cos(a) + ry0 ;

(0)

相关推荐

  • 如何让Word中的表格实现任意纵横

    在日常办公应用中,我们经常会遇到将一个简历表格中各行内容连接起来作为一列形成新表的情况,Word中没有现成的功能,忽然想起Excel中 “选择性粘贴”中的“转置”功能,但实际操作一下才发现,它只能将个 ...

  • 让Word中的表格实现任意纵横的方法

    在日常办公应用中,我们经常会遇到将一个简历表格中各行内容连接起来作为一列形成新表的情况,Word中没有现成的功能,忽然想起Excel中“选择性粘贴”中的“转置”功能,但实际操作一下才发现,它只能将个人 ...

  • Word中的表格实现任意纵横的方法

    在日常办公应用中,我们经常会遇到将一个简历表格中各行内容连接起来作为一列形成新表的情况,Word中没有现成的功能,忽然想起Excel中"选择性粘贴"中的"转置" ...

  • 怎么在PS软件中任意角度旋转画布?

    许多小伙伴在修图的时候都会使用到PS软件,如果我们在修图的过程中想要调整图片的角度,旋转画布应该如何操作呢?今天,小编就教大家在PS软件中任意角度旋转画布.具体如下:1. 首先,我们打开电脑中的PS软 ...

  • Word中输入的文字以任意方向旋转的方法

    问:因工作需要,希望在Word中输入的文字能以任意方向旋转,我看了一下,Word中的文字似乎只能横向、竖向排列,我想要的方向是比如45度那样的,能设置吗? 答:Word菜单里的“格式→文字方向”确实不 ...

  • 如何将Word文档中文字以任意角度旋转

    问:因工作需要,希望在Word中输入的文字能以任意方向旋转,我看了一下,Word中的文字似乎只能横向、竖向排列,我想要的方向是比如45度那样的,能设置吗? 答:Word菜单里的“格式→文字方向”确实不 ...

  • 如何将Excel中一个表格数据导入到另一个表格

    将Excel中一个表格的数据导入到另一个表格的方法 如下是一个Excel工作薄中的两张表,分别为Sheet1和Sheet2,下面分别以表1和表2来代替.我们要把表2中的语文成绩导入到表1中,但是从图中 ...

  • 在word文档中怎样让文字任意旋转、任意倾斜?

    最近有网友提出word文档中怎么让文字旋转问题,小编收集提取了各大知名网站有关word文档中怎么让文字旋转信息,本文中可以使文字任意旋转,任意倾斜,下面小编就为大家详细介绍一下,来看看吧! 方法一:插 ...

  • 电脑端AI中一个项目如何增加画板数量

    AI是我们现在经常使用的软件,可以帮助我们对排版进行调整,今天小编就告诉大家电脑端AI中一个项目如何增加画板数量.具体如下:1. 首先我们打电脑中的AI,进入主界面之后我们点击新建,选择新建一个新项目 ...