如何计算触摸点和UIImageView中心之间的斜率

时间:2013-08-03 15:02:34

标签: iphone ios objective-c

如何计算触点与UIImageView中心之间的斜率?

我尝试了很多代码,其中一个是:

CGPoint translation = [gesture translationInView:[myImage superview]];
double tx = myImage.center.x - translation.x;
double ty = myImage.center.y - translation.y;
double t_length = sqrt((tx*tx) + (ty*ty));
double a = cos(ty / t_length);

没有给出正确的角度,所以请帮帮我

2 个答案:

答案 0 :(得分:3)

atan2(y, x)返回从(0, 0)(x, y)的行与正数之间的角度 x轴,所以你可能需要

double angle = atan2(myImage.center.y - translation.y, myImage.center.x - translation.x);

返回值以弧度表示,介于-Pi和Pi之间。请注意,“y值”首先出现!

答案 1 :(得分:0)

对于这个问题,您想要考虑您希望斜率相对于哪一点。实际上,斜率的大小将是相同的,但符号会发生变化。例如,如果情况如下图所示:enter image description here

然后您将使用以下方法计算您的坡度:

CGPoint myImageCenter = myUIImage.center;
CGPoint myClickedPoint =[gesture translationInView:[myImage superview]];
double slope = (myImageCenter.y - myClickedPoint.y) / ((myImageCenter.x - myClickedPoint.x))

这个斜率是线的斜率,但一定要考虑可能发生在右上角,正好在上方或下方并且与中心位于同一水平面上的触摸。