Я программирую в Windows API, используя C ++. Для этой программы я использую Traslating and Scaling 3D MATRIX, а также событие WM_MOUSEWHEEL. Это часть кода:
case WM_MOUSEWHEEL:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
rotw = GET_WHEEL_DELTA_WPARAM(wParam);
if (rotw > 0)
zoom += 0.05f;
else
zoom -= 0.05f;
InvalidateRect(hWnd, NULL, false);
break;
Для реализации я использую это:
Translation(xPos,yPos)*Scaling(zoom, zoom)
Но проблема в том, что зум неправильный, потому что он «перепрыгивает» из одной точки в другую, что затрудняет и затрудняет масштабирование определенной точки.
Я читал кое-что о вычислении новых точек X и Y с новыми точками X и Y и использовании коэффициента масштабирования (я думаю, мой коэффициент масштабирования — это переменная ‘zoom’).
Вы можете мне помочь?
Большое спасибо!
Задача ещё не решена.
Других решений пока нет …