[英]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.