Эквивалент CGPoint с целыми числами?
Приветствия,
Мне нравится строгая типизация в C. Поэтому я не хочу хранить 2D-вектор плавающих чисел, если мне особенно нужны целые числа. Есть ли эквивалент Apple CGPoint
, который хранит данные как целые числа?
Я реализовал свой тип Vector2i
и его функцию-компаньон Vector2iMake()
à la CGPoint, но что-то глубоко в меня кричит, что Apple уже там.
Обновление для объяснения.
Мне нужен тип данных, который будет хранить координаты в настольной игре. Это определенно целые числа. То же самое было бы, если бы я должен был реализовать основанную на черепице пошаговую стратегию или основанную на плитке RPG.
Ответы
Ответ 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 для независимости от разрешения экрана и т.д.
Ответ 4
Можно использовать int-векторы?
http://developer.apple.com/mac/library/documentation/Performance/Conceptual/vecLib/Reference/reference.html#//apple_ref/doc/uid/TP40002498-CH1g-TPXREF103