#language-agnostic #layout #user-interface #geometry #coordinates
#не зависит от языка #макет #пользовательский интерфейс #геометрия #координаты
Вопрос:
Сопоставление логических координат с координатами экрана настроено таким образом, что диаграмма, имеющая протяженность от (-5, -4) до ( 5, 6) в логических координатах, отображается на экране с координатами пикселей от 0,0 до 300, 400. Пользователь нажимает на 200 300 пикселей. Чему это соответствует в логических координатах диаграммы?
Создаем ли мы матрицу (30x40y 1)? и тогда 200 = 30x => x = 6,67 300 = 40y => y = 7,5 ???
Комментарии:
1. SO не для выполнения домашней работы.
Ответ №1:
Для X вам нужно сопоставление от (0, 300) до (-5, 5). Следовательно, вам нужна линейная функция f (x), такая, что f (0) =-5 и f (300) = 5. Вы можете записать это путем проверки как:
f(x) = -5 [( 5 - -5)/(300 - 0)]x
= -5 (10/300)x
Вы можете тривиально применить ту же логику к другой оси.
Эта проблема упрощается тем фактом, что верхний левый угол вашего прямоугольника экрана равен (0,0), но даже если бы это было не так, можно следовать тому же принципу.
Комментарии:
1. Большое спасибо. Это было действительно полезно. Результат тот же, с использованием матрицы, как я показал выше, но с вычитанием перевода X и Y в каждом случае. т.е. x = 6,67-5 = 1,67 и y = 7,5-4 = 3,5
2. Очевидно, что вы можете выполнить то же линейное преобразование с матрицей, но я не думаю, что вы что-то получите, делая это. Если это ответ на ваш вопрос, то, пожалуйста, не забудьте отметить его как принятый ответ.