将屏幕坐标转换为世界坐标

时间:2011-10-03 08:15:03

标签: wpf math matrix coordinates transform

我正在为我正在撰写的地图应用程序制作转换矩阵。

我的屏幕坐标和目标坐标空间中的点有一个点,出于某种愚蠢的原因,我似乎无法弄清楚如何找到转换矩阵,将屏幕坐标中的点转换为世界坐标。 / p>

例如:

坐标(1005.758,673.661)应转换为(786382.6,2961730.3) 和坐标(1010.240,665.217)应转换为(786488.3,2961837)。我正在使用WPF,这就是为什么屏幕坐标实际上是double而不是int

1 个答案:

答案 0 :(得分:1)

使用两个坐标,您可以提取缩放系数和平移(如果地图仅使用这两个操作)。

第一维的缩放由

给出
s1 = (786382.6 - 786488.3) / (1005.758 - 1010.24) => s1 ~ 23.583

并在第二个通道

s2 = (2961730.3 - 2961837) / (673.661 - 665.217) => s2 ~ -12.636

而相应的偏移是

o1 = 786382.6 - s1 * 1005.758 => o1 ~ 762663.586

o2 = 2961730.3 - s2 * 673.661 => o2 ~ 2970242.809

因此,您的转换由

提供
(x, y) -> (o1+s1*x, o2+s2*y) = (762663.586+23.583*x, 2970242.809-12.636*y)