forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Delphi (http://forum.boolean.name/forumdisplay.php?f=66)
-   -   Cos и Sin в OpenGL! (http://forum.boolean.name/showthread.php?t=5046)

pipns 17.11.2007 19:12

Cos и Sin в OpenGL!
 
Вложений: 1
Не так давно я начал учить OpenGL, вместе с Delphi и у меня всплыла проблема с Cos и Sin. Я поварачиваю объект с помощью Rotatef..., пытаюсь сдвинуть его с места, как в игре "Астероид" - Translatef.
А проблема в том, что он двигается не так, как надо - танцует, не могу понять почему?
исходник здесь же...

HolyDel 17.11.2007 21:16

Re: Cos и Sin в OpenGL!
 
вот два фрашмента с наиболее большим кол-вом непоняток
Код:

glPushMatrix;
 glTranslatef (X, Y, 0);
 glPushMatrix;
 glRotatef (Angle, 0, 0, 1);
 glBegin(GL_POLYGON);
  glVertex2f(0.0, 0.02);
  glVertex2f(0.05, 0.0);
  glVertex2f(0.0, -0.02);
 glEnd;
 glPopMatrix;
 glPopMatrix;

1. операции зачем ты два раза в стек пихаеш по большому счету одну матрицу?
Код:

  if Key = VK_ESCAPE then Close;
  if Key = VK_LEFT then Angle := Angle + 10;
  if Key = VK_RIGHT then Angle := Angle - 10;
  if Key = VK_UP then begin
  X := Cos(Angle) * 0.1 + X;
  Y := Sin(Angle) * 0.1 + Y;

2. Тут ты не задаеш координаты относительно угла, а ИЗМЕНЯЕШ их, ИНКРЕМЕНТРУЯ их.
надо наверно так
X := Cos(Angle) * 0.1 + X0;
Y := Sin(Angle) * 0.1 + Y0;
, где x0, y0 - центр, вокруг чего надо крутить.
Да, углы вроде в радианах в дельфи. такчто учти. диапазон от -1.57 до 1.57

pipns 18.11.2007 00:08

Re: Cos и Sin в OpenGL!
 
Вроде, как я понял в чем проблема, буду его исправлять. Спасибо!
На счет первого твоего вопроса, ты, имел введу, зачем я использую два раза операцию glPushMatrix;...glPopMatrix?

alcoSHoLiK 18.11.2007 00:31

Re: Cos и Sin в OpenGL!
 
Дешевле каждый раз вызывать glLoadIdentity(); перед трансформациями.

HolyDel 18.11.2007 02:13

Re: Cos и Sin в OpenGL!
 
alcoSHoLiK, а если он захчет реализовать нормальную камеру? или родительскую привязку?

alcoSHoLiK 18.11.2007 02:27

Re: Cos и Sin в OpenGL!
 
Тогда и одного пуша хватит.

pipns 18.11.2007 13:12

Re: Cos и Sin в OpenGL!
 
Ответ простой, это пример моей проблемы, вообще-то я встретил ее при созданиии камеры!:)

pipns 18.11.2007 13:43

Re: Cos и Sin в OpenGL!
 
Проблема была в радианах, теперь все отлично, буду творить...
А вообще, можно сделать игру или скрин-прогу на Делфи, чтобы весил не больше 64Кбайт, если, например, создать окно вручную и т.д.?

WaReZ_MEN 19.11.2007 10:14

Re: Cos и Sin в OpenGL!
 
Цитата:

А вообще, можно сделать игру или скрин-прогу на Делфи, чтобы весил не больше 64Кбайт.
Маленькую прогу можно... если без графики :) и тока на WinApi.


Часовой пояс GMT +4, время: 02:35.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot