Перемещение объекта вместе с мышью - PullRequest
1 голос
/ 24 февраля 2012

Я нарисовал квадрат, теперь я хочу переместить его вдоль плоскости, следующей за указателем мыши. Я использую открытые 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;
}

и затем я перевожу объект с помощью функции gtranslatef со значениями dx и dy.

gl.glTranslatef(dx, dy,0);

, но для небольшого перемещения указателя мыши. В положении объекта имеется большое смещение.

Как мне переместить объект вместе с мышью?

1 Ответ

0 голосов
/ 24 февраля 2012

Координаты указателя обычно находятся в физических размерах экрана, то есть в пикселях.Ваши координаты OpenGL зависят от применяемых матриц проекции и вида модели.

Что вам нужно сделать, это сделать обратное преобразование координат экрана / области просмотра в ваш объект или мировое пространство.Это делается путем обращения конвейера преобразования.Поскольку умножение матриц является линейной операцией, вы можете не только вводить через нее абсолютные значения, но и для разностей.дельный совет, как его продлить или изменить.Пожалуйста, отправьте его на http://pastebin.com или аналогичный.

...