使用矩阵中的切比雪夫距离更改值

时间:2016-11-12 13:59:25

标签: c# algorithm math matrix

我有一个20x20的矩阵,其中有0个值。

矩阵[10,10]选择值:1。

Picture1 full size image

距离是:3。

如何在C#中使用切比雪夫距离算法更改邻居值(距离:3)?

Picture2 full size image

算法可以检查,如果选择的值1不在矩阵的中心(例如:矩阵[1,1] = 1),则不会超出矩阵索引范围。

我在维基百科上读过chebysev距离,但我不懂数学公式。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题是正确的,你想要将某个参考点r的半径(x, y)内的所有条目更改为定义的值(其中半径以切比雪夫指标衡量)。您可以通过计算轴上的适当范围来完成此操作:

var lowerX = Math.Max(0, x - radius);
var upperX = Math.Min(matrix.Columns - 1, x + radius);
var lowerY = Math.Max(0, y - radius);
var upperY = Math.Min(matrix.Rows - 1, y + radius);
for(int i = lowerX; i <= upperX; ++i)
    for(int j = lowerY; j <= upperY; ++j)
        matrix[i][j] = value;

方法matrix.Rowsmatrix.Columns和元素访问matrix[][]仅用于示例。您必须使用适当的数据结构方法。