Форум программистов, компьютерный форум CyberForum.ru

Почему функция работает именно так? - C++

Восстановить пароль Регистрация
 
romasimeiz
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 260
12.12.2012, 22:07     Почему функция работает именно так? #1
Доброго времени суток! Помогите разобраться с кодом пожалуйста
У меня есть фигурка которая крутится на экране.
Есть функция которая отвечает за постоянное и плавное вращение моей фигурки. Сам студент. С++ знаю плохо. С графикой , тем более анимированой никогда не работал. Поэтому не понимаю принцип.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
float PeekTimeDelta()
{
    static int t = GetTickCount(); // почему именно статик? я убирал его, у меня вообще ничего не крутиться :(
 
    int dt = GetTickCount() - t; // это приращение времени дельта, 
    t = GetTickCount(); // зачем прописывать эту строчку опять? если её убрать то анимация будет до бесконечности ускоряться....
 
    return 0.001f * dt;
}
 
void UpdateSceneObjects( scene::s_figure* pRoot )
{
    float dt = PeekTimeDelta();
 
    fYaw += dt * 100.f;
    fPitch += dt * 10.f;
 
    while( pRoot )  // что значит пока pRoot.?Я так понимаю pRoot это указатель на созданный класс и while( pRoot )  означает что "пока указатель или класс существует". Правильно ли это?
    {
        if( pRoot->is_anim() )
            pRoot->rotate( s_vector3( fYaw, fPitch, 0.f ) );
 
        pRoot = pRoot->next();
 
    }// while( f )
 
 
fLightH += dt * 0.2f;
    if( fLightH > 1.f )
        fLightH -= (int) fLightH;
 
    scene::vLigPos.y = sinf( fLightH * 3.14f ) * 25.f - 7.5f;
 
 
 
}
}; //namespace animation
Не понимаю принципа. Знаю что функция делает покадровую анимацию, изменением координат, которые умножаются на эту дельту, но почему это работает так не понимаю

Буду очень благодарен за любую помощь! Спасибо! )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 22:07     Почему функция работает именно так?
Посмотрите здесь:

Почему так работает, а так нет? C++
C++ Почему так странно работает калькулятор
почему это так работает C++
Почему не работает функция? C++
Почему не работает функция? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
12.12.2012, 23:22     Почему функция работает именно так? #2
1. Статик переменную там надо, потому что иначе она выйдет из области видимости функции
2. Второе присваивание надо, потому что статик переменная инициализируется только один раз тоесть при первом вызове функции PeekTimeDelta. Без этой строки (7 строка) переменная t инициализировалась бы один раз со значением
GetTickCount()
3. Пока pRoot не равно NULL
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
13.12.2012, 00:46     Почему функция работает именно так? #3
если не секрет, что это?..типо юнити что-то?..)
romasimeiz
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 260
13.12.2012, 12:46  [ТС]     Почему функция работает именно так? #4
Это нас в универе учат работать с комп.графикой. Подключили DirectX в прогу и нарисовали при помощи вершин и граней фигурку 3D, которая крутиться и подсвечивается! ) Этот проект вся наша группа ctrl+c ctrl+v поэтому в коде трудновато разобраться )
Спасибо огромное! )
Yandex
Объявления
13.12.2012, 12:46     Почему функция работает именно так?
Ответ Создать тему
Опции темы

Текущее время: 11:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru