我正在使用.net的WPF几何类来绘制波形。我一直在使用矩阵变换将波形从屏幕坐标空间转换到我的坐标空间。一切都很好,跟踪我的窗口和缩放等都很简单。我甚至可以使用逆变换来计算坐标空间中的鼠标位置。我使用内置的Scaling和Translation类,然后使用自定义矩阵进行y轴翻转(没有用于翻转的预置矩阵)。我也希望能够在对数尺度上绘制这些波形(x轴或y轴或两者都有),但我不确定这是否可以通过矩阵变换来实现。有没有人知道这是否可能,如果可能,矩阵是什么?
发布于 2010-03-29 23:06:27
矩阵是线性变换,所以它们可以缩放、旋转等,但它们不能对数拉伸。这是一个非线性变换。
编辑:但你应该能够自己滚动这个,没有不必要的麻烦。(不需要了解lin alg。)我的意思是,如果你想让x轴在对数标度上,取x坐标的对数,作为图。棘手的部分是让scale图例在图形的一侧工作--这归结为将每个scale值从x转换为10^x (或您使用的任何对数底数)。
因此,图例应该是这样的:
1 10 100 1000
而不是
1 2 3 4
发布于 2010-03-29 23:08:02
很明显,矩阵是这样的:
( log(x) / x 0 ) ( x ) = ( log(x) )
( 0 log(y) / y ) ( y ) = ( log(y) )
但这显然是没有用的。你不能写一个常量矩阵来做非线性变换。
https://stackoverflow.com/questions/2538844
复制相似问题