CGAffineTransformMakeRotation не работает

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

Я создаю 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];

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

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

1 ответ

Решение

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

Другие вопросы по тегам