C#在半径内的网格上获取附近的点

时间:2018-11-10 03:53:21

标签: c# grid points

我有一个具有X和Y坐标的网格。在这个网格上,我有一个起点,我想让所有附近的单元格都在一定的半径内。

我做了以下函数,每个方向+1并返回光斑。

    public List<Point> GetLocationsStraightLine(Point fromLocation, int Distance)
    {
        var nearbySpots = new List<Point>();
        int StartDistance = 1;

        while (StartDistance < Distance)
        {
            nearbySpots.Add(new Point(fromLocation.X, (short)(fromLocation.Y - StartDistance)));
            nearbySpots.Add(new Point((short)(fromLocation.X + StartDistance), fromLocation.Y));
            nearbySpots.Add(new Point(fromLocation.X, (short)(fromLocation.Y + StartDistance)));
            nearbySpots.Add(new Point((short)(fromLocation.X - StartDistance), fromLocation.Y));

            StartDistance++;
        }

        return nearbySpots;
    }

这将从我的起点开始以直线返回所有点。但是,我也想抓住中间的地方。

这是我目前得到的(对不起的图像,抱歉)

image of points i return

但是我希望能够输入2的距离并获得开始位置周围的完整正方形。

what i want full square with diagnonal

所以我问有什么简单的方法可以获取对角线,而不仅仅是起点呢?

1 个答案:

答案 0 :(得分:0)

由于它是矩形,因此可以使用非常简单的方法。假设rows+= "<tr class='row'>" + "<td class='name'>" + awayTeam + "</td>" + "<td class='score'>" + aScore + "</td>" + "<td class='name'>" + homeTeam + "</td>" + "<td class='score'>" + hScore + "</td>" + "<td class='period'>" + currentPeriod + "</td>" + "</tr>" table = "<table class='data'>" + rows + "</table>" return table 始终为正:

"<td class="${(aScore>hScore) ? 'winning' : 'name'}">" + awayTeam + "</td>"

想法是从左上角开始,并逐行添加矩形中的每个点,在右下角结束。