Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何计算接触点和UIImageView中心之间的坡度_Iphone_Ios_Objective C - Fatal编程技术网

Iphone 如何计算接触点和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

如何计算接触点和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);
它没有给出一个直角,因此请帮助我

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
的线的角度,这就是我理解您问题的方式。我很想帮忙,但“它没有正确旋转我的图像”是一个相当糟糕的问题描述。。。