Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Android 使用倾斜向量识别光标所在的向量_Android - Fatal编程技术网

Android 使用倾斜向量识别光标所在的向量

Android 使用倾斜向量识别光标所在的向量,android,Android,我试图创造一个条件来知道我的光标在哪个向量中,所以我试图用一个图像来说明,想象它是一个平板电脑: 所以我需要一个代码来知道当事件ACTION.DOWN时光标在哪个向量中(不是坐标)。我知道我必须使用if条件和一些公式,但无法使用。首先,找到从屏幕中心到角落的斜率(y/x)。然后找到从中心到光标的坡度。比较绝对值 如果光标坡度高于拐角坡度,则位于第1/3节。否则,你将处于2/4。只需简单检查一下中心的哪一侧就可以确定从哪一侧开始 例如,如果光标坡度高于角点,且光标位于中心上方,则位于第1节。假设

我试图创造一个条件来知道我的光标在哪个向量中,所以我试图用一个图像来说明,想象它是一个平板电脑:

所以我需要一个代码来知道当事件ACTION.DOWN时光标在哪个向量中(不是坐标)。我知道我必须使用if条件和一些公式,但无法使用。

首先,找到从屏幕中心到角落的斜率(
y/x
)。然后找到从中心到光标的坡度。比较绝对值

如果光标坡度高于拐角坡度,则位于第1/3节。否则,你将处于2/4。只需简单检查一下中心的哪一侧就可以确定从哪一侧开始


例如,如果光标坡度高于角点,且光标位于中心上方,则位于第1节。

假设动作向下事件的坐标为(x,y),矩形从左上角的(0,0)延伸到右下角的(w,h)。您可以使用以下公式对事件进行分类(通过将(x,y)与(w,h)以及[(x,y)-(w,0)]与[(0,h)-(w,0)]的叉积计算得出):

  • x*h-y*w-如果这是正的,那么(x,y)在主对角线上方
  • w*h-x*h-y*w-如果这是正的,那么(x,y)在次对角线上方

因此,如果事件位于两条对角线上方,则它最接近向量1;如果它位于主对角线上方,但在次对角线下方,则它最接近向量2;等等。

感谢Ted Hopp粘贴我的图像。我做了计算,效果很好,现在我将它放入我的代码中,非常感谢@Ted Hopp