Я пытаюсь найти способ проверить, находится ли определенная точка внутри или снаружи круга на карте изометрии c. В настоящее время я использую следующий метод для рисования круга:
public static List<Coords> GetBrushCircleCoords(int x0, int y0, int radius)
{
List<Coords> coords = new List<Coords>();
int x = radius;
int y = 0;
int err = 0;
while (x >= y)
{
coords.Add(new Coords(x0 + x, y0 + y));
coords.Add(new Coords(x0 + y, y0 + x));
coords.Add(new Coords(x0 - y, y0 + x));
coords.Add(new Coords(x0 - x, y0 + y));
coords.Add(new Coords(x0 - x, y0 - y));
coords.Add(new Coords(x0 - y, y0 - x));
coords.Add(new Coords(x0 + y, y0 - x));
coords.Add(new Coords(x0 + x, y0 - y));
y += 1;
err += 1 + 2 * y;
if (2 * (err - x) + 1 > 0)
{
x -= 1;
err += 1 - 2 * x;
}
}
return coords;
}
И подход, который я пытаюсь определить, находится ли точка внутри круга, в основном принимает желаемую точку, определите ее расстояние до центр и проверка, если он больше, чем радиус, с помощью следующего метода:
public static int GetDistance(Coords _from, Coords _to)
{
return Math.Max(Math.Abs(_from.X - _to.X), Math.Abs(_from.Y - _to.Y));
}
Однако, кажется, метод GetDistance не лучший способ рассчитать это, так как рассчитанное им расстояние довольно короче, чем один используется на GetBrushCircleCoords. Как правильно определить, находится ли определенная точка внутри / снаружи этого круга?