У меня есть сетка с координатами 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;
}
Возвращает все точки по прямой от моей начальной точки.Однако я хочу также взять промежуточные пятна.
Это то, что я сейчас получаю (извините за плохое изображение)
изображение точек, которые я возвращаю
Однако я хочу иметь возможность ввести расстояние 2 и получить полный квадрат вокруг начального местоположения.
что я хочу получить полный квадрат с диагнозом
Поэтому я спрашиваю, есть ли какой-нибудь простой способ получить диагонали, а не просто прямую линию от моей начальной точки?