简单的。取一个角度(假设是 45 度)。这对应于一个向量v=(1, 1)
在你的情况下。 (这可以标准化为酉向量(sqrt(2)/2, sqrt(2)/2)
,但这不是必要的)
对于数组中的每个点,都有它们的坐标(x, y)
。只需将这些坐标与向量进行标量积即可。我们打电话吧f(x, y) = scalarProduct((x, y), v)
对 的值进行排序f(x, y)
您已经找到了您正在寻找的“穿越”!
一个真实的例子。
你的矩阵是 3x3
标量产品是:
(0,0).(1,1) = 0
(0,1).(1,1) = 1
(0,2).(1,1) = 2
(1,0).(1,1) = 1
(1,1).(1,1) = 2
(1,2).(1,1) = 3
(2,0).(1,1) = 2
(2,1).(1,1) = 3
(2,2).(1,1) = 4
如果按升序对这些标量积进行排序,则会得到顺序 (0,0)、(1,0)、(1,0)、(2,0)、(1,1)、(0,2)、 (2,1)...
如果你想用角度 20 来做,请替换所有出现的v=(1, 1)
with v=(cos(20), sin(20))
这是几何解释的图示。标量积对应于向量 v(红色)与蓝线的交点。