我正在为我正在撰写的地图应用程序制作转换矩阵。
我的屏幕坐标和目标坐标空间中的点有一个点,出于某种愚蠢的原因,我似乎无法弄清楚如何找到转换矩阵,将屏幕坐标中的点转换为世界坐标。 / p>
例如:
坐标(1005.758,673.661)应转换为(786382.6,2961730.3)
和坐标(1010.240,665.217)应转换为(786488.3,2961837)。我正在使用WPF,这就是为什么屏幕坐标实际上是double
而不是int
。
答案 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)