昨天我问了一个问题-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
{1}}和event.getX()
。
然后在event.getY()
中得到x和y,与上面相同,将其命名为MotionEvent.ACTION_UP
和xup
。
然后我得到中心点,将其命名为yup
和centerx
。
现在看起来像这样:
centery
现在我想从 xdown, ydown
|
|
|
|
|
|
|centerx, centery
|
|
|
|
|
|
xup, yup
得到x和y 90度,可以说是40度。
另一个恶魔之星:
centerx, centery
答案 0 :(得分:1)
似乎您有方向,并且想要获得垂直方向。
方向矢量的成分为(dx, dy)
dx = centerx - xup
dy = centery - yup
然后,垂直向量的左侧分量(请注意-“左侧”取决于坐标系统的惯性!)
px = - dy
py = dx
({px=dy
和py=-dx
,如果您的方向不正确)
要在所需方向上在距离D处获得点ninty
,请对向量进行归一化并将其分量乘以D
lenp = sqrt(px*px + py*py)
upx = px / lenp
upy = py / lenp
nintyX = centerx + upx * D
nintyY = centery + upy * D