2012-02-24 5 views
1

사각형을 그렸습니다. 이제는 마우스 포인터 다음의 평면을 따라 이동하려고합니다. 열려있는 GL es 1.0을 사용하고 있습니다. 아래 코드로 동작 위치가 달라 지려고했습니다.마우스와 함께 객체 이동

@Override public boolean onTouchEvent(MotionEvent e) { 
    float x = e.getX(); 
    float y = e.getY(); 
    switch (e.getAction()) { 
    case MotionEvent.ACTION_MOVE: 
     mRenderer.dx = x - mPreviousX; 
     mRenderer.dy = y - mPreviousY; 
     requestRender(); 
    } 
    mPreviousX = x; 
    mPreviousY = y; 
    return true; 
} 

그리고 나서 dx 및 dy 값과 함께 gtranslatef 함수를 사용하여 개체를 변환합니다.

gl.glTranslatef(dx, dy,0); 

그러나 마우스 포인터에서 약간의 움직임이 있습니다. 개체 위치에서 큰 변위가 있습니다.

어떻게 개체를 마우스와 함께 움직일 수 있습니까?

+0

화면에 손가락을 대고 다른 곳을 누르는 중입니까? – SteveL

답변

0

포인터 좌표는 일반적으로 화면 실제 크기, 즉 픽셀 단위입니다. OpenGL 좌표는 적용한 투영 및 모델 뷰 행렬에 따라 다릅니다.

해야 할 일은 화면/뷰포트 좌표를 개체 또는 월드 공간으로 역 변환하는 것입니다. 이것은 변환 파이프 라인을 뒤집어서 수행됩니다. 행렬 곱셈은 선형 연산이기 때문에 절대 값을 입력 할 수있을뿐만 아니라 미분에도 잘 작동합니다.

더 알려 드리 겠지만 기존 프로그램 구조를 확장하거나 변경하는 방법을 조언 해 줄 필요가 있습니다. http://pastebin.com 또는 그와 비슷한 것에 게시하십시오.

+0

gluUnproject 함수를 사용하여 화면 좌표를 객체 좌표계로 변환 할 수 있습니다. –

+0

@SatishKumar : 예, 이것에 대해 알고 있습니다. 나는 OP가 매트릭스 스택을 남용하고있을지도 모른다는 이유로 직설적으로 말하고 싶지 않았다. 먼저 코드에 gluUnproject를 coaxing하기 전에 코드를 수정하여 수정할 수 있기를 원했습니다. – datenwolf

+0

확신합니다. 나는 그가 특정 기능을 들여다 보면 스스로 배울 수 있다고 생각했다. :) –

관련 문제