代码之家  ›  专栏  ›  技术社区  ›  Dave M

有没有转换矩阵可以对数缩放x和/或y轴?

  •  5
  • Dave M  · 技术社区  · 16 年前

    我正在使用.NET WPF几何类绘制波形图。我一直在使用矩阵转换将屏幕坐标空间转换为波形的坐标空间。一切都很好,跟踪窗口和缩放等非常简单。我甚至可以使用逆变换来计算鼠标在坐标空间中的位置。我使用内置的缩放和转换类,然后使用自定义矩阵进行Y轴翻转(没有用于翻转的预设矩阵)。我想也能在对数尺度上画出这些波形(X轴或Y轴,或两者兼而有之),但我不确定这是否可能与矩阵变换有关。有人知道这是否可能,如果可能,矩阵是什么?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Rob Lachlan    16 年前

    矩阵是线性变换,因此它们可以缩放、旋转等,但不能对数拉伸。这是一个非线性变换。

    编辑:但是你应该能够自己滚动这个,没有不必要的麻烦。(不需要林算法的知识)我是说,如果你想x轴在对数尺度上, 记录你正在绘制的X坐标 . 复杂的部分是让比例图例在图的一侧工作——这可以归结为将每个比例值从x转换为10^x(或使用的任何对数基数)。

    所以传说是这样的:

    1     10    100   1000
    

    而不是

    1      2      3      4
    
        2
  •  0
  •   Cascabel    16 年前

    很明显,矩阵是这样的:

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

    但这显然没用。你不能写一个常数矩阵来做非线性变换。