Цель C: Сравнение CGPoints - PullRequest
       2

Цель C: Сравнение CGPoints

11 голосов
/ 12 января 2012

Я пытаюсь сделать оператор if-else для моих CGPoints как бы я смог это сделать, я попробовал этот код ...

if (point1 != point2)
{
       //statement
}

У меня эта ошибка

Invalid operand for binary expression...

Спасибо!

Ответы [ 4 ]

43 голосов
/ 12 января 2012

Попробуйте вместо этого использовать функцию CGPointEqualToPoint.

if (!CGPointEqualToPoint(p1,p2))
{
  //statement
}
8 голосов
/ 12 января 2012

вы можете сделать:

if (!CGPointEqualToPoint(point1, point2)) {
....
}

float (и, следовательно, CGFloats) немного сложнее, потому что иногда вы хотите, чтобы они считались равными, но они незначительны.если вы хотите «нечеткое» сравнение, вы можете сделать что-то вроде:

if (fabsf(point1.x - point2.x) > 0.0001f || fabsf(point1.y - point2.y) > 0.0001f) {
...
}

, чтобы проверить, отличаются ли компоненты x & y точки1 и точки2 на величину, превышающую 0,0001 (совершенно произвольно).число, может быть любым, в зависимости от желаемой вами точности).

7 голосов
/ 12 января 2012

Я бы посоветовал использовать следующую функцию: (из Apple Docs)

CGPointEqualToPoint : Возвращает, равны ли две точки.

bool CGPointEqualToPoint (CGPoint point1, CGPoint point2);

Параметры

point1: первый пункт для изучения.

point2: второй пункт для изучения.

Возвращаемое значение true, если две указанные точки являются так же; в противном случае - ложь.

Для получения дополнительной информации читайте здесь: CGGeometry Reference

5 голосов
/ 12 января 2012

см CGPointEqualToPoint: Возвращает, равны ли две точки.

bool CGPointEqualToPoint (
   CGPoint point1,
   CGPoint point2
);

http://developer.apple.com/library/mac/#DOCUMENTATION/GraphicsImaging/Reference/CGGeometry/Reference/reference.html

Параметры

  • point1: первая точка для проверки.
  • point2: вторая точка для проверки.

Возвращаемое значение

true, еслидве указанные точки совпадают;в противном случае - ложь.

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