Эквивалент CGPoint с целыми числами? - PullRequest
16 голосов
/ 10 апреля 2010

Приветствия

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

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


Обновление, чтобы объяснить.

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

Ответы [ 4 ]

7 голосов
/ 15 апреля 2010

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

Я не знаю о «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
6 голосов
/ 15 апреля 2010

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

Из справочника класса:

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

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

3 голосов
/ 10 апреля 2010

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

0 голосов
/ 19 апреля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...