Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.70.101] |
|
Сообщ.
#1
,
|
|
|
Товарищи, решаю задачу перехода по карте в точку, задаваемую кликом мышки. Пока не масштабирую (чтобы можно было перемещаться в дальние области или более точно) картинку функцией glScalef все нормально, стоит изменить масштаб и кликнуть, gluUnproject выдает GL_FALSE, безумные значения wX, wY, что-нибудь в степени +305 или -287, соответственно, никуда не идем. Может я где чего забыл?
glGetIntegerv(GL_VIEWPORT,@Viewport); glGetDoublev(GL_MODELVIEW_MATRIX,@MVmatrix); glGetDoublev(GL_PROJECTION_MATRIX, @Projmatrix); //viewport[3] - высота окна в пикселях, редбук стр. 100-101 //у нас задана квадратная область вывода (не окна!), ширина = высота, можно написать ClientWidth realY:= ClientWidth - Y - 561; // realY:= Viewport[3] - Y - 561; Caption:= 'X = '+ IntToStr(X)+ ' Y = '+IntToStr(realY); if gluUnProject(X, realY,0.0,@MVmatrix,@Projmatrix,@viewport,wX,wY,wZ) = GL_TRUE then begin pX:= -cX*Un+StartLon+wX*Un; //координаты в м pY:= -cY*Un+StartLat+wY*Un; dX:= -(wX+cX); dY:= -(wY+cY); glTranslate(dX,dY,0); //двигаем cX:= cX+dX; cY:= cY+dY; end; |