Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > OpenGL - Вращение объектов


Автор: Yura_Matsuk 10.11.2004, 21:54
Такая проблема. В OpenGL объект двигается не туда, куда повернут. И вообще, я не нашел никакой связи между тем, куда он повернут и куда двигается. А поворачивается он ровненько вокруг своей оси Z.

Обработка клавишь:

Код

if keys[VK_Up] then with mycub do
begin
worldx:=worldx+cos(Angz)*0.05;
worldy:=worldy+sin(Angz)*0.05;
end;
if keys[VK_Left] then with mycub do angz:=angz+0.5;
if keys[VK_Right] then with mycub do angz:=angz-0.5;


Рисование:

Код


var i:longint;
begin
glloadidentity;
gltranslatef(worldx,worldy,worldz);
glrotatef(angz,0.0,0.0,1.0);
for i:=0 to length(faces)-1 do with faces[i] do
begin
 glbegin(GL_QUADS);
  with pts[0] do glvertex3f(x,y,z);
  with pts[1] do glvertex3f(x,y,z);
  with pts[2] do glvertex3f(x,y,z);
  with pts[3] do glvertex3f(x,y,z);
 glend;
end;
end;

Автор: p0s0l 10.11.2004, 23:16
Цитата
И вообще, я не нашел никакой связи между тем, куда он повернут и куда двигается.
smile

sin и cos используют радианы
glRotate - градусы...

Сделай так:
Код

const
 d2r = pi/180; // перевод градусы -> радианы
 r2d = 180/pi; // радианы -> градусы

....

if keys[VK_Up] then with mycub do
begin
worldx:=worldx+cos(Angz*d2r)*0.05;
worldy:=worldy+sin(Angz*d2r)*0.05;
end;

...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)