0

How to calculate the slope between touch point and UIImageView center?

I tried a lot of codes, one of them is this:

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);

It is not giving a right angle, so please help me

4

2 回答 2

3

atan2(y, x)返回线 from (0, 0)to(x, y)和正 x 轴之间的角度,因此您可能需要

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

返回值以弧度为单位,介于 -Pi 和 Pi 之间。请注意,“y 值”是第一位的!

于 2013-08-03T15:34:47.273 回答
0

对于这个问题,您需要考虑斜率相对于哪个点。实际上,斜率的大小是相同的,但符号会改变。例如,如果情况如下图所示:在此处输入图像描述

那么您将使用以下方法计算斜率:

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

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

于 2013-08-03T16:00:35.463 回答