CGAffineTransformMakeRotation效果不佳

The*_*eme 0 objective-c rotation cgaffinetransform ios

我有一个游戏,你有"斑点"和"连接器".

我创建了一个连接两个"斑点"的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];
Run Code Online (Sandbox Code Playgroud)

"DistanceBetweenPoints"不是问题.这很好.另外,我知道中心和框架有点多余 - 我稍后会解决这个问题.第三,我确保两个斑点永远不会直接相互叠加(永远不会除以零).最后,我仍然希望这些是UIIMAGEVIEWS !! 因此,我可以更改图像并为它们设置动画,使其看起来像是从斑点到斑点的电流.

如果有人能告诉我如何使旋转更准确,那将非常感激.谢谢!

use*_*321 5

你应该使用atan2(y,x),而不是tanh(y/x).也就是说,你想要反正切,而不是双曲正切.