以下是我通过从屏幕获取触摸位置并计算从原点到触摸点的半径并传递给渲染器来绘制圆来绘制圆的代码。
public boolean onTouchEvent(MotionEvent e) {
float ex=0, ey=0;
switch (e.getAction()) {
case MotionEvent.ACTION_DOWN:
ex = (e.getX()/(getWidth()/2))-1;
ey = 1-(e.getY()/(getHeight()/2));
dist = (float) (Math.sqrt(Math.pow(ex, 2)+Math.pow(ey, 2)));
}
mRenderer.radius = dist;
requestRender();
return true;
}
但与我指定的接触点半径相比,我绘制的圆的半径较小。即输出与触摸事件不一致。我想知道是否有用于到达触摸位置的触摸比例因子以及如何在代码中使用它?
最佳答案
正如 5agado 指出的那样,这是因为您需要考虑投影和 View 矩阵。
您可以为此使用光线拾取:它基本上包括从屏幕中的触摸点到您的场景跟踪光线。在您的情况下,您需要计算此射线与绘图表面的交点。
关于android - 在 Android、OpenGL 中,我想使用以中心为设备屏幕中点的运动事件动态绘制一个圆,但没有获得所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16272437/