Подтвердить что ты не робот

Эквивалент CGPoint с целыми числами?

Приветствия,

Мне нравится строгая типизация в C. Поэтому я не хочу хранить 2D-вектор плавающих чисел, если мне особенно нужны целые числа. Есть ли эквивалент Apple CGPoint, который хранит данные как целые числа?

Я реализовал свой тип Vector2i и его функцию-компаньон Vector2iMake() à la CGPoint, но что-то глубоко в меня кричит, что Apple уже там.


Обновление для объяснения.

Мне нужен тип данных, который будет хранить координаты в настольной игре. Это определенно целые числа. То же самое было бы, если бы я должен был реализовать основанную на черепице пошаговую стратегию или основанную на плитке RPG.

4b9b3361

Ответ 1

Если вы представляете свою игровую панель как объекты, хранящиеся в нераспределенных вложенных массивах, то вы можете захотеть рассмотреть подклассы NSIndexPath или используя его напрямую.

Из ссылки на класс:

Класс NSIndexPath представляет путь к определенному node в дереве вложенных массивов массивов. Этот путь известен как путь указателя.

Каждый индекс в пути индекса представляет индекс в массив дочерних элементов из одного node в дереве на другое, глубже, node.

Ответ 2

(чтобы ответить на вопрос...)

Мне не известно о "NSIntegerPoint", но нетрудно сделать это:

struct NSIntegerPoint {
   NSInteger x;
   NSInteger y;
};

Наряду с такими вещами, как:

CG_INLINE NSIntegerPoint
NSIntegerPointMake(NSInteger x, NSInteger y)
{
  NSIntegerPoint p; p.x = x; p.y = y; return p;
}

CG_INLINE bool
__NSIntegerPointEqualToPoint(NSIntegerPoint point1, NSIntegerPoint point2)
{
  return point1.x == point2.x && point1.y == point2.y;
}
#define NSIntegerPointEqualToPoint __NSIntegerPointEqualToPoint

Ответ 3

В соответствии с Руководством по программированию приложений iPhone все предоставленные точки основаны на платах. И когда вы используете их для работы с экраном (в конечном итоге ожидая целых чисел), вы все равно должны использовать float для независимости от разрешения экрана и т.д.