如何计算触点与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);
没有给出正确的角度,所以请帮帮我
答案 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)
对于这个问题,您想要考虑您希望斜率相对于哪一点。实际上,斜率的大小将是相同的,但符号会发生变化。例如,如果情况如下图所示:
然后您将使用以下方法计算您的坡度:
CGPoint myImageCenter = myUIImage.center;
CGPoint myClickedPoint =[gesture translationInView:[myImage superview]];
double slope = (myImageCenter.y - myClickedPoint.y) / ((myImageCenter.x - myClickedPoint.x))
这个斜率是线的斜率,但一定要考虑可能发生在右上角,正好在上方或下方并且与中心位于同一水平面上的触摸。