昨天我问了一个问题-Draw arrow according to path

在该问题中,我解释了我想在onTouchEvent方向绘制一个箭头。我在评论中得到一个答案,说我应该旋转画布。

昨晚我有了一个新主意,这是这个问题的出处。



通过在我的x内部调用MotionEvent.ACTION_DOWN,可以得到event.getX();onTouchEvent中的位置/坐标。

我想知道是否可以从x获得90度的点/坐标吗?

这是使动作清晰的演示:

                                      |
                                      |
                                      |
                                      |
                                      |
                                      |
point I want to get --> x1------------x


如上所示,x1是我想要的。



还值得一提的是,以下内容将不起作用,因为x轴可能成一定角度:

x1 = x - value




编辑:

我想我把这个问题弄不清楚了,对此感到抱歉。

我将创建一个场景以更好地说明自己

onTouchEvent内部的MotionEvent.ACTION_DOWN中,设置起始的xy,通过调用xdownydown将其命名为event.getX()event.getY()

然后在MotionEvent.ACTION_UP中得到x和y,与上面相同,将其称为xupyup

然后,我得到中心点,将其称为centerxcentery

现在看起来像这样:

               xdown, ydown
              |
              |
              |
              |
              |
              |
              |centerx, centery
              |
              |
              |
              |
              |
              |
               xup, yup


现在我想从centerx, centery获取x和y 90度,可以说是40的距离。

另一个恶魔星:

                              xdown, ydown
                             |
                             |
                             |
                             |
                             |
                             |
  nintyX,nintyY <------------|centerx, centery
                             |
                             |
                             |
                             |
                             |
                             |
                              xup, yup

最佳答案

似乎您有一些方向,并且想要获得垂直方向。

方向向量的分量是(dx, dy)

dx = centerx - xup
dy = centery - yup


则左向量(注意-“左”取决于坐标系的惯性!)的垂直向量是

 px =  - dy
 py =   dx


px=dypy=-dx,如果您的方向不正确)

要在所需方向上在距离D处获得点ninty,对向量进行归一化并将其分量乘以D

lenp = sqrt(px*px + py*py)
upx = px / lenp
upy = py / lenp
nintyX = centerx + upx * D
nintyY = centery + upy * D

09-26 08:26