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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
romasimeiz
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 260
#1

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

12.12.2012, 22:07. Просмотров 361. Ответов 3
Метки нет (Все метки)

Доброго времени суток! Помогите разобраться с кодом пожалуйста
У меня есть фигурка которая крутится на экране.
Есть функция которая отвечает за постоянное и плавное вращение моей фигурки. Сам студент. С++ знаю плохо. С графикой , тем более анимированой никогда не работал. Поэтому не понимаю принцип.

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++
Не могу понять, почему при инициализации *p мы берем по ссылке, а при *p2 просто присваивание? #include <iostream> using namespace std;...

Почему в С++ это сделано именно так? Объяснение для НЕ программиста - C++
В этой теме хотелось бы задавать "тупые" вопросы по С++ и получить ответы и объяснения на нормальном человеческом языке, понятном НЕ...

Почему так работает, а так нет? - C++
так работает // Возведение b в степень s по модулю m float powmod(float b, long s) { float c=1; while (s) {

Почему-то игнорируется эта функция, другие работают. Что не так? - C++
void boat::atack() { srand(static_cast <unsigned int>(time(0))); std::cout << "Нажмите любую клавишу для начала боя!"; _getch();...

почему это так работает - C++
по заданию надо создать два одинаковых массива с случайными числами от 0 до 99 for (i = 0; i < 1000; i++) { cout <<a<<" "; ...

Не понимаю, что не так, почему не работает - C++
#include<cstdlib> #include <stdio.h> #include <conio.h> #include "iostream" using namespace std; void main() {int *a,i,N; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
13.12.2012, 00:46     Почему функция работает именно так? #3
если не секрет, что это?..типо юнити что-то?..)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2012, 12:46     Почему функция работает именно так?
Еще ссылки по теме:

Почему так странно работает калькулятор - C++
Здраствуйте, я сегодня решил взяться за C++, решил написать самое простое, калькулятор: #include <cstdlib> #include <iostream> ...

почему не работает функция? - C++
#include <iostream> #include <conio.h> void function (int k)// { for(int i=0;i<k;i++) std::cout<<"*"; } int...

Почему не работает функция? - C++
Почему не работает функция? Пишет ошибку: результатом выполнения фрагмента не является 0 аргумеетов int provPas() { string...

Почему не работает функция? - C++
Вот понадобилась функция для взятия остатка от деления нецелых чисел написал такую: long double OperationDouble( long double a , long...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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     Почему функция работает именно так?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru