Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 是否存在可以对数缩放x轴和/或y轴的变换矩阵?_Wpf_Math_Matrix_Transform - Fatal编程技术网

Wpf 是否存在可以对数缩放x轴和/或y轴的变换矩阵?

Wpf 是否存在可以对数缩放x轴和/或y轴的变换矩阵?,wpf,math,matrix,transform,Wpf,Math,Matrix,Transform,我正在使用.NETWPF几何类来绘制波形。我一直在使用矩阵变换从屏幕坐标空间转换到波形的坐标空间。一切都很好,跟踪窗口和缩放等非常简单。我甚至可以使用逆变换来计算鼠标在坐标空间中的位置。我使用内置的缩放和平移类,然后使用自定义矩阵进行y轴翻转(没有用于翻转的预制矩阵)。我希望能够在对数刻度上绘制这些波形(x轴或y轴或两者),但我不确定这是否可能通过矩阵变换实现。有人知道这是否可能,如果可能,矩阵是什么吗?矩阵是线性变换,因此它们可以缩放、旋转等,但不能对数拉伸。这是一个非线性变换 编辑:但是你应

我正在使用.NETWPF几何类来绘制波形。我一直在使用矩阵变换从屏幕坐标空间转换到波形的坐标空间。一切都很好,跟踪窗口和缩放等非常简单。我甚至可以使用逆变换来计算鼠标在坐标空间中的位置。我使用内置的缩放和平移类,然后使用自定义矩阵进行y轴翻转(没有用于翻转的预制矩阵)。我希望能够在对数刻度上绘制这些波形(x轴或y轴或两者),但我不确定这是否可能通过矩阵变换实现。有人知道这是否可能,如果可能,矩阵是什么吗?

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

编辑:但是你应该能够自己滚动这个,没有不必要的麻烦。(不需要林阿尔格知识。)我的意思是,如果你想让x轴处于对数刻度,记录你正在绘制的x坐标。棘手的部分是使比例图例在图形的一侧工作——这归结为将每个比例值从x转换为10^x(或使用的任何对数基数)

因此,传说是这样的:

1     10    100   1000
而不是

1      2      3      4

很明显,矩阵是这样的:

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

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

谢谢,是的,我想可能是这样,也许有一种方法可以创建我自己的Transform类实现来进行非线性变换?转换抽象基类似乎仍然使用矩阵,这可能是进行复合转换的必要条件,因此这可能也不可能。我想我得自己做日志缩放了。糟糕。我学线性代数已经很久了。我不是WPF专家,但我在MSDN上查看了Transform类的描述,它似乎是专为线性变换设计的。(这有很好的理由——它们的用途非常广泛,而且更容易推理。)