Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анимация, Помогите написать программу 
:(
    Опции темы
hitman88
Дата 13.4.2009, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.3.2009

Репутация: нет
Всего: нет



Народ, у мя такая засада: нужно написать программу с анимацией,но анимация не простая и как ее делать ХЗ! Задача состоит в том что одна фигура должна медленно переходить в др., тобишь например шар в куб и т.п. Помогите написать, буду очень признателен
PM MAIL   Вверх
Mazzi
Дата 14.4.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: нет
Всего: 21



Предлагаю тебе решить эту задачу следующим образом:

1. Создаёшь сферу из треугольников.
2. Все координаты вершин записываешь в массив.
3. Передвигаешь вершины таким образом, чтобы из треугольников образовался например куб.
4. Все новые координаты вершин записываешь в другой массив.

Теперь для создания анимаци следует сначала отобразить исходную фигуру, а затем на каждом шаге анимации передвигать каждую точку приближая её к положению из второго массива.

Всё.

Удачи!



--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
sdukshis
Дата 14.4.2009, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 23.3.2009

Репутация: нет
Всего: 1



Это называется морфинг и описано в некоторых книгах по компьютерной графике

Так же можно посмотреть здесь:
http://pmg.org.ru/nehe/nehe25.htm

PM MAIL   Вверх
hitman88
Дата 15.4.2009, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.3.2009

Репутация: нет
Всего: нет



Люди я реально не знаком с этим, может кто-нито поможет, плииииииз....
PM MAIL   Вверх
hitman88
Дата 22.4.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.3.2009

Репутация: нет
Всего: нет



Что люди, не добрых программистов что ли?  smile 
PM MAIL   Вверх
Mazzi
Дата 23.4.2009, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: нет
Всего: 21



Напиши в личку.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
goody
Дата 29.4.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 23.4.2008

Репутация: нет
Всего: нет



Возможно речь идет о твининге.
Вот пример :
Код

#include <stdlib.h>

#include <math.h>

#include <time.h>

#include <stdio.h>

#include <GL/glut.h>  



int Width = 800;

int  Height = 600;

int x[8]={30,30,130,130,110,110,50,50};

int y[8]={200,320,320,200,200,300,300,200};  

int postx[8]={230,230,300,300,260,260,300,300};

int posty[8]={250,370,370,360,360,270,270,250,};





int risx[8]={30,30,130,130,110,110,50,50};

int risy[8]={200,320,320,200,200,300,300,200};

float t=0;

int STOP=0;



void Display(void)  

{

    glClearColor(0, 0, 0, 1);

    glClear(GL_COLOR_BUFFER_BIT); 

    





 glBegin(GL_LINE_LOOP);

 for(int i=0; i<8; i++)

 {

 glVertex2f(risx[i],risy[i]);

    }

 

 

 

 glEnd();











    glutSwapBuffers ();

  glFlush();  

     

}





void Reshape(GLint w, GLint h)  

{

    Width = w;

    Height = h;   

    glViewport(0, 0, w, h);                         

  glMatrixMode(GL_PROJECTION);                               

  glLoadIdentity();             

  glOrtho(0, w, 0, h, -1, 1);        

                                                           

}



void idle()

{

    if(STOP==0){

    for(int i=0; i<8; i++)

    {

        risx[i]=x[i]*(1-t)+t*postx[i];    

        risy[i]=y[i]*(1-t)+t*posty[i];    

    }    

    t+=0.0001;

    if(risx[1]==postx[1] && risy[1]==posty[1])

    STOP=1;

    }

    Display();

    

    

}

 

void Keyboard( unsigned char key, int x, int y ) 

{

#define ESCAPE '\033'



    if( key == ESCAPE )

        exit(0);

}





int main(int argc, char *argv[])  

{

    glutInit(&argc, argv);   



    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);  



    glutInitWindowSize(Width, Height);  

   // glutWindowPosition(0,0);

    glutCreateWindow("ik");  

                                        

    glutIdleFunc(idle);



    glutDisplayFunc(Display); 



    glutReshapeFunc(Reshape); 



    glutKeyboardFunc(Keyboard);  



    glutMainLoop();  



}



PM MAIL   Вверх
hitman88
Дата 5.5.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.3.2009

Репутация: нет
Всего: нет



А экзешник можно, а то че то не компилиться... ошибки выдает...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0530 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.