PointF与X呈90度角

时间:2018-11-28 06:00:26

标签: java android android-canvas

昨天我问了一个问题-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 {1}}和event.getX()

然后在event.getY()中得到x和y,与上面相同,将其命名为MotionEvent.ACTION_UPxup

然后我得到中心点,将其命名为yupcenterx

现在看起来像这样:

centery

现在我想从 xdown, ydown | | | | | | |centerx, centery | | | | | | xup, yup 得到x和y 90度,可以说是40度。

另一个恶魔之星:

centerx, centery

1 个答案:

答案 0 :(得分:1)

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

方向矢量的成分为(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