昨天我问了一个问题 - Draw arrow according to path
在那个问题中,我解释说我想在 onTouchEvent
的方向上绘制一个箭头。我在评论中得到了答案,说我应该旋转 Canvas 。
昨晚我有了一个新想法,这就是这个问题的由来。
<小时/>我通过在 onTouchEvent< 内调用
.event.getX();
获取 MotionEvent.ACTION_DOWN
中的 x
位置/坐标
我想知道是否可以从x
得到一个90度的点/坐标?
这里是一个演示,可以让移动更加清晰:
|
|
|
|
|
|
point I want to get --> x1------------x
如上所示,x1
就是我想要得到的。
还值得一提的是,以下内容将不起作用,因为 x
轴可能成一定角度:
x1 = x - value
<小时/>
编辑:
我认为我的问题不清楚,对此感到抱歉。
我将创建一个场景来更好地解释自己
在 MotionEvent.ACTION_DOWN
内的 onTouchEvent
中,我设置了起始 x
和 y
,我们将其称为 xdown
和 ydown
,通过调用 event.getX()
和 event.getY()
。
然后在 MotionEvent.ACTION_UP
中我得到 x 和 y,与上面相同,我们将其称为 xup
和 yup
。
然后我得到中心点,我们将其称为centerx
和centery
。
现在看起来像这样:
xdown, ydown
|
|
|
|
|
|
|centerx, centery
|
|
|
|
|
|
xup, yup
现在我想从 centerx, centery
获得 x 和 y 90 度,假设距离为 40。
另一个恶魔:
xdown, ydown
|
|
|
|
|
|
nintyX,nintyY <------------|centerx, centery
|
|
|
|
|
|
xup, yup
最佳答案
似乎您有一些方向并且想要获得垂直方向。
方向 vector 的分量为(dx, dy)
dx = centerx - xup
dy = centery - yup
然后左分量(注意 - “左度”取决于坐标系惯用手!)垂直 vector 是
px = - dy
py = dx
(px=dy
和 py=-dx
如果方向不适合您)
要在所需方向上获得距离 D 处的点 ninty
,请将 vector 归一化并将其分量乘以 D
lenp = sqrt(px*px + py*py)
upx = px / lenp
upy = py / lenp
nintyX = centerx + upx * D
nintyY = centery + upy * D
关于java - F 点与 X 成 90 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53513066/