В настоящее время в моей программе я определил квадрат квадратной сетки в его верхнем левом углу. Я хочу изменить определение, поэтому квадрат определяется его центром. Однако значения X и Y квадрата должны быть круглыми.Найти центр квадрата, который находится в
Способ нахождения верхнего левого угла квадрата точка находится в:
public Vector2 InSquare(Vector2 vector)
{
int x = (int)vector.X, y = (int)vector.Y;//floor of vector coordinates
x -= x % SquareSize;
y -= y % SquareSize;
return new Vector2(x, y);
}
SquareSize является свойством типа Int (это может быть и нечетным числом). Вектор2 представляет собой вектор XNA с поплавками X и Y. SquareSize - это длина края квадрата.
Как изменить определение квадрата на его центральную точку, но все же иметь центры с круглыми координатами?
(я не помечать этот вопрос как XNA, поскольку он не требует опыта XNA, чтобы понять)
Спасибо.
EDIT:
То, что я пытался сделать это, чтобы представить уровень в игре с равномерной квадратной сеткой. квадрат на сетке был определен его верхним левым углом. Однако, поскольку я знаю, какие квадраты заблокированы путем повторения текстуры уровня, применяя матрицу к каждой точке, а затем блокируя квадрат, в котором находится точка, имея квадраты, определяемые их верхним левым углом, означает, что каждый заблокированный квадрат был слегка выключен слева от того места, где он должен был быть. Наличие каждого квадрата определяется их центральной точкой означает, что каждый заблокированный квадрат ближе к тому месту, где препятствие находится на карте.
Надеюсь, это объяснит проблему лучше.
Спасибо @potato за его/ее ответ. Мой текущий метод:
public Vector2 InSquare(Vector2 vector)
{
float x = vector.X, y = vector.Y;//floor of vector coordinates
x -= x % SquareSize - (SquareSize/2);
y -= y % SquareSize - (SquareSize/2);
return new Vector2(x, y);
}
Я изменил площадь, чтобы плавать.
Я не очень понимаю, что вы пытаетесь достичь, может вы, пожалуйста, приложите некоторые усилия для переформулировки вопроса? –
Точка может быть целым числом, но PointF может быть числом с плавающей запятой. – jdweng
@WillemVanOnsem Извините, что написал такой плохой вопрос. Я написал его, пока он был сонным и стрессом, и не собирался тратить время на то, чтобы сделать это снова. – user1461837