昨天我问了一个问题-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
中,设置起始的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
最佳答案
似乎您有一些方向,并且想要获得垂直方向。
方向向量的分量是(dx, dy)
dx = centerx - xup
dy = centery - yup
则左向量(注意-“左”取决于坐标系的惯性!)的垂直向量是
px = - dy
py = dx
(
px=dy
和py=-dx
,如果您的方向不正确)要在所需方向上在距离D处获得点
ninty
,对向量进行归一化并将其分量乘以Dlenp = sqrt(px*px + py*py)
upx = px / lenp
upy = py / lenp
nintyX = centerx + upx * D
nintyY = centery + upy * D