Iphone 如何计算接触点和UIImageView中心之间的坡度
如何计算接触点和UIImageView中心之间的坡度 我尝试了很多代码,其中之一是:Iphone 如何计算接触点和UIImageView中心之间的坡度,iphone,ios,objective-c,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)); d
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);
它没有给出一个直角,因此请帮助我atan2(y,x)
返回从(0,0)
到(x,y)
的直线与正直线之间的角度
x轴,所以你可能需要
double angle = atan2(myImage.center.y - translation.y, myImage.center.x - translation.x);
返回值以弧度为单位,介于-Pi和Pi之间。请注意,“y值”排在第一位 atan2(y,x)
返回从(0,0)
到(x,y)
的直线与正直线之间的角度
x轴,所以你可能需要
double angle = atan2(myImage.center.y - translation.y, myImage.center.x - translation.x);
返回值以弧度为单位,介于-Pi和Pi之间。请注意,“y值”排在第一位 对于这个问题,您需要考虑坡度相对于哪个点。实际上,坡度的大小将是相同的,但标志将发生变化。例如,如果情况如下图所示: 然后使用以下公式计算坡度:
CGPoint myImageCenter = myUIImage.center;
CGPoint myClickedPoint =[gesture translationInView:[myImage superview]];
double slope = (myImageCenter.y - myClickedPoint.y) / ((myImageCenter.x - myClickedPoint.x))
此坡度是直线的坡度,但请务必考虑可能发生在右上角的接触,即与中心在同一水平面上的正上方或正下方。对于此问题,您需要考虑坡度相对于哪个点。实际上,坡度的大小将是相同的,但标志将发生变化。例如,如果情况如下图所示: 然后使用以下公式计算坡度:
CGPoint myImageCenter = myUIImage.center;
CGPoint myClickedPoint =[gesture translationInView:[myImage superview]];
double slope = (myImageCenter.y - myClickedPoint.y) / ((myImageCenter.x - myClickedPoint.x))
此坡度是直线的坡度,但请务必考虑可能发生在右上角的接触,即在与中心完全相同的水平面上方或下方。此代码仅给出35到75之间的角度,这有什么问题?@phplover:atan2返回-Pi和Pi之间的值。如果将其转换为度,则它介于-180和180之间。也许您可以在结果不符合预期的情况下显示一些输入值。是的,我知道我必须将弧度转换为度数,我确实这样做了,但它没有显示有理值。@phplover:“不显示有理值”是什么意思?请显示一些输入值,其中计算的角度不是您期望的。否则很难得到帮助。@phplover:
atan2(p2.y-p1.y,p2.x-p1.x)
计算从p1
到p2
的线的角度,这就是我理解您问题的方式。我很想帮忙,但是“它没有正确地旋转我的图像”是一个相当糟糕的问题描述……这段代码只给出了35到75之间的角度,这是怎么回事?@phplover:atan2返回一个介于-Pi和Pi之间的值。如果将其转换为度,则它介于-180和180之间。也许您可以在结果不符合预期的情况下显示一些输入值。是的,我知道我必须将弧度转换为度数,我确实这样做了,但它没有显示有理值。@phplover:“不显示有理值”是什么意思?请显示一些输入值,其中计算的角度不是您期望的。否则很难得到帮助。@phplover:atan2(p2.y-p1.y,p2.x-p1.x)
计算从p1
到p2
的线的角度,这就是我理解您问题的方式。我很想帮忙,但“它没有正确旋转我的图像”是一个相当糟糕的问题描述。。。