Логические координаты и координаты экрана

#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. Очевидно, что вы можете выполнить то же линейное преобразование с матрицей, но я не думаю, что вы что-то получите, делая это. Если это ответ на ваш вопрос, то, пожалуйста, не забудьте отметить его как принятый ответ.