CGAffineTransformMakeRotation не работает - PullRequest
0 голосов
/ 13 марта 2012

У меня есть игра, в которой у вас есть "пятнышки" и "соединители".

Я делаю UIImageView, который соединяет две "пятнышки" ... но, как вы можете видеть (если изображение работает), когда пятнышкипочти друг на друга, как слева, это не работает.Это мой код ... и мне было интересно, как вы могли бы сделать вращение более точным в такой ситуации.

UIImageView *connector = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"RedConnector.png"]];
        connector.contentMode = UIViewContentModeScaleToFill;
        connector.hidden = NO;
        connector.alpha = 1;

        connector.frame = CGRectMake(0, 0, [self DistanceBetweenPoints:speck1.center :speck2.center], 7);
        connector.center = CGPointMake((speck1.center.x + speck2.center.x)/2, (speck1.center.y + speck2.center.y)/2);
//This is where the prob is:
        connector.transform = CGAffineTransformMakeRotation(tanh((speck2.center.y - speck1.center.y)/(speck2.center.x - speck1.center.x)) );
        [Connectors addObject:connector];
        [self.view addSubview:connector];

«Расстояние между точками» не является проблемой.Это отлично работает.Кроме того, я знаю, что центр И рамка вроде бы избыточны - я разберусь с этим позже.В-третьих, я позаботился о том, чтобы две пятнышки никогда не находились непосредственно друг над другом (чтобы никогда не делить на ноль).И наконец, я все еще хочу, чтобы они были UIIMAGEVIEWS !!Поэтому я могу изменить изображение и анимировать их так, чтобы оно выглядело как электричество, протекающее от пятнышка к пятнышке.

Если бы кто-нибудь мог показать мне, как сделать вращение более точным, это было бы очень полезно.Спасибо!

1 Ответ

5 голосов
/ 13 марта 2012

Вы должны использовать atan2(y,x), а не tanh(y/x).То есть вы хотите арктангенс, а не гиперболический тангенс.

...