Существует ли матрица преобразования, которая может масштабировать оси х и / или у логарифмически? - PullRequest
5 голосов
/ 29 марта 2010

Я использую классы геометрии .net WPF для построения графиков сигналов. Я использовал матричные преобразования для преобразования из координатного пространства экрана в мое координатное пространство для сигнала. Все отлично работает, и действительно просто отслеживать мое окно и масштабирование и т. Д. Я даже могу использовать обратное преобразование для вычисления положения мыши в терминах координатного пространства. Я использую встроенные классы Scaling и Translation, а затем настраиваемую матрицу для переворачивания по оси Y (там нет готовой матрицы для переворачивания). Я хочу иметь возможность отображать эти осциллограммы в логарифмическом масштабе (либо по оси x, либо по оси y, либо по обоим направлениям), но я не уверен, возможно ли это сделать с помощью преобразования матрицы. Кто-нибудь знает, возможно ли это, и если да, то какова матрица?

Ответы [ 2 ]

2 голосов
/ 29 марта 2010

Матрицы являются линейными преобразованиями, поэтому они могут масштабироваться, вращаться и т. Д. Но они не могут растягиваться логарифмически. Это нелинейное преобразование.

РЕДАКТИРОВАТЬ: Но вы должны быть в состоянии свернуть это самостоятельно, без лишних проблем. (Не требует знания lin alg.) Я имею в виду, если вы хотите, чтобы ось x была в логарифмическом масштабе, возьмите журнал координат x, который вы отображаете . Сложная задача - заставить легенду шкалы работать на стороне графика, которая сводится к преобразованию каждого значения шкалы из x в 10 ^ x (или в любую базу логарифма, которую вы используете.)

Итак, легенда гласит:

1     10    100   1000

вместо

1      2      3      4
0 голосов
/ 29 марта 2010

Ну, ясно, что матрица будет такой:

( log(x) / x        0      ) ( x )  =  ( log(x) )
(      0        log(y) / y ) ( y )  =  ( log(y) )

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...