我是OpenGL的新手,我想请你帮忙甚至是代码示例(我浏览了很多页面,但似乎我太新鲜了,无法找到正确的答案或提出有效的问题)。< / p>
我的用例是:创建3个三角形,并允许用户通过手指在屏幕上的不同位置移动每个三角形(如拖放)
在渲染器内部,我保留了三角形物体:
public class MyGLRenderer implements GLSurfaceView.Renderer
{
ArrayList<MyTriangle> myObjectsOnSurface_;
}
但是如何确定我应该从onTouchEvent(..)移动哪个对象?
public class MyGLSurfaceView extends GLSurfaceView {
@Override
public boolean onTouchEvent(final MotionEvent evt) {
float currentX = evt.getX();
float currentY = evt.getY();
....
}
}
答案 0 :(得分:0)
一种方法可以是维持每个三角形的中心点(x,y)的数据结构,然后在触摸事件上确定是否有任何中心点靠近触摸点。如果从触摸(x,y)到其中心点(x,y)的欧几里德距离是可接受的,则仅移动三角形。 2D距离== sqrt((x1-x2)^ 2 +(y1-y2)^ 2)。这个过程超出了OpenGL调用的范围,所以滚动你自己的解决方案听起来很合理。