Преобразование координат экрана в мировые координаты - PullRequest
1 голос
/ 03 октября 2011

Я работаю над матрицей преобразования для приложения карты, которое я сейчас пишу.

У меня есть точка в экранных координатах и ​​точки в целевом координатном пространстве, и по какой-то глупой причине я не могу понять, как найти матрицу преобразования, которая преобразует точки моих экранных координат в мировые координаты. 1003 *

Например:

Координата (1005.758, 673.661) должна быть преобразована в (786382.6, 2961730.3) и координаты (1010.240, 665.217) должны быть преобразованы в (786488.3, ​​2961837). Я использую WPF, поэтому координаты экрана на самом деле double, а не int.

1 Ответ

1 голос
/ 03 октября 2011

С двумя координатами вы можете извлечь коэффициент масштабирования и перевод (если карта использует только эти две операции).

Масштабирование в первом измерении задается как

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)
...