繁体   English   中英

将图像旋转90、180或270度后,获取相对于原始图像的图像坐标

[英]Getting image coords relative to original image after image is rotated 90, 180, or 270 degrees

我知道可能有一个简单的数学解决方案,但我只是无法获得(不做一些漫长的绘制过程)。

假设我有一个1200px宽x 800px高的横向图像...。然后将图像顺时针旋转90、180或270度。

如果在旋转的图像上选择了一个点(坐标),如何确定原始非旋转图像上的坐标?

举一个简单的例子:如果将上面的图像旋转180度,然后将坐标设置为100,100(左上角)....相同的坐标将是1100,700(右下角)图片。

语法明智,我试图用Javascript计算

谢谢!

数学上正式的方式是旋转矩阵

例如,对于逆时针旋转90度,旋转矩阵为:

R(90) = [0 -1]
        [1  0]

矩阵乘法公式为:

[x90] = [0 -1][x]
[y90]   [1  0][y]

使用矩阵乘法将其扩展为标准符号:

x90 = -y;
y90 =  x;

请注意,它绕原点[0,0]旋转,因此您必须归一化以获取所有+ ve坐标。 用javascript编写,类似于:

x90 = ymax - y;
y90 = x;

这里[x,y]是原始坐标,[x90,y90]是旋转坐标,[xmax,ymax]是原始图像的宽度和高度。

对于180度,旋转矩阵为:

R(180) = [-1  0]
         [ 0 -1]  

转换为javascript并进行标准化:

x180 = xmax - x;
y180 = ymax - y;

对于逆时针270度,旋转矩阵为:

R(270) = [ 0 1]
         [-1 0]  

转换为javascript并进行标准化:

x270 = y;
y270 = xmax - x;

MathOverflow上的类似问题和答案应该是您想要的。

TL;博士:

x' = x*cos(θ) - y*sin(θ)
y' = x*sin(θ) + y*cos(θ)

其中{x,y}是原始点, θ是旋转角度, {x',y'}是新点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM