Перевод осей при изменении границ

Я так понимаю, чтобы перевести:

x = x' + x0     or     x' = x - x0
y = y' + y0     or     y' = y - y0

где (x, y) — старые координаты относительно системы xy, (x ‘, y’) — новые координаты относительно системы x’y ‘, а (x0, y0) — координаты относительно старой системы xy.

Я ищу перевод системы, а также изменение границ. Я хочу «увеличить» определенный участок графика в фиксированном окне, что изменило бы начало координат и границы.

Для справки я задал похожий вопрос Вот, но я думаю, что это было немного более запутанным.

2

Решение

Надеюсь, это ответит на ваш вопрос:

Давайте предположим, что окно, в котором вы строите график (в пиксельных координатах), таково, что нижний левый угол (p_ll, q_ll) и верхний правый угол (p_ur, q_ur),

В вашей декартовой координате, однако, те же места (x_ll, y_ll) а также (x_ur, y_ur), Тогда вот те преобразования, которые вам нужны:

p(x) = p_ll + (p_ur - p_ll) * (x - x_ll) / (x_ur - x_ll)
q(y) = q_ll + (q_ur - q_ll) * (y - y_ll) / (y_ur - y_ll)

Так, например, в случае, если окно x from 0 to 600 and y from 0 to 600и границы сюжета x from -2 to 2 and y from -1 to 1 тогда точка, которая имеет координату (0.0, 0.0) будет в (p(0), q(0)) или же

p(0.0) = 0 + (600 - 0) * (0 -(-2)) / (2 - (-2)) = 300
q(0.0) = 600 + (0 - 600) * (0 - (-1)) / (1 - (-1)) = 300

то же самое для любой другой точки. Вы можете попробовать уравнение, и вы должны найти это p(-2) = 0, p(2) = 600, q(-1) = 600, а также q(1) = 0,

Обратите внимание, что здесь я предполагаю, что координата пикселя y направлена ​​вниз (как это делают почти все координаты монитора), а декартова координата y направлена ​​вверх.

Если вы хотите перейти от экранной координаты к координатной диаграмме (например, если вы хотите преобразовать позицию щелчка мыши в ее декартову противоположность), используйте эти обратные преобразования:

x(p) = x_ll + (x_ur - x_ll) * (p - p_ll) / (p_ur - p_ll)
y(q) = y_ll + (y_ur - y_ll) * (q - q_ll) / (q_ur - q_ll)
0

Другие решения