Home :: Diary

Diary of Anton Te

Prev :: Next

Урок 42. C++ Броуновское движение

Fri Apr 30 00:00:00 2010



На этом уроке мы создадим модель летающих молекул и одной большой по сравнению с молекулами частицы.

Все уроки: http://www.youtube.com/view_play_list...

Исходный код: http://code.google.com/p/cplusplus-le...

ЧаВо: http://code.google.com/p/cplusplus-le...

Уроки также можно скачать с торрентов:
http://rutracker.org/forum/viewtopic....
http://nnm-club.ru/forum/viewtopic.ph...
Файлы подготовил greggh. Респект и уважуха.

Ссылка на видео, как собирать OpenGL программы: http://www.youtube.com/watch?v=VuGzY3...


Урок 43. C++ Работа с мышкой

Wed May 5 00:00:00 2010



Добавим немного интерактива нашим программам. Научимся обрабатывать события от мышки с помощью glut библиотеки.

Все уроки: http://www.youtube.com/view_play_list...

Исходный код: http://code.google.com/p/cplusplus-le...

ЧаВо: http://code.google.com/p/cplusplus-le...

Ссылка на видео, как собирать OpenGL программы: http://www.youtube.com/watch?v=VuGzY3...


Урок 1e2. C++ Первая программа

Thu May 13 00:00:00 2010



* Первая программа
* Вывод на экран, ввод с клавиатуры
* Переменные

Исходный код: http://code.google.com/p/cplusplus-le...

ЧаВо: http://code.google.com/p/cplusplus-le...

Все уроки:
http://www.youtube.com/view_play_list...

Уроки также можно скачать с торрентов:
http://rutracker.org/forum/viewtopic....
http://nnm-club.ru/forum/viewtopic.ph...
Файлы подготовил greggh. Респект и уважуха.


Урок 44. C++ Рисование трехмерных графиков

Thu May 20 00:00:00 2010



На этом уроке мы попробуем нарисовать график функции двух переменных в 3D. Так же перейдем от орфографической проекции к перспективной.

Все уроки: http://www.youtube.com/view_play_list...

Исходный код: http://code.google.com/p/cplusplus-le...

ЧаВо: http://code.google.com/p/cplusplus-le...

Уроки также можно скачать с торрентов:
http://rutracker.org/forum/viewtopic....
http://nnm-club.ru/forum/viewtopic.ph...
Файлы подготовил greggh. Респект и уважуха.

Ссылка на видео, как собирать OpenGL программы: http://www.youtube.com/watch?v=VuGzY3...


Урок 45. C++ Волны

Fri May 21 00:00:00 2010



На этом уроке мы нарисуем волны в 3D.

Все уроки: http://www.youtube.com/view_play_list...

Исходный код: http://code.google.com/p/cplusplus-le...

ЧаВо: http://code.google.com/p/cplusplus-le...

Уроки также можно скачать с торрентов:
http://rutracker.org/forum/viewtopic....
http://nnm-club.ru/forum/viewtopic.ph...
Файлы подготовил greggh. Респект и уважуха.

Ссылка на видео, как собирать OpenGL программы: http://www.youtube.com/watch?v=VuGzY3...

// ----------------------

// Урок 45
// Волны
#include <GL/glut.h>
#include <cmath>

const float K = 40;
const float DT = 0.03;

float sqr(float x)
{
    return x * x;
}

struct P
{
    P(): z(0), vz(0) {}
    float x;
    float y;
    float z;
    float vz;
};

const int N = 48;

P p[N][N];

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    for (int x = 0; x < N; ++x)
    {
        glBegin(GL_LINE_STRIP);
        for (int y = 0; y < N; ++y)
            glVertex3f(p[x][y].x, p[x][y].y, p[x][y].z * 10);
        glEnd();
    }
    for (int y = 0; y < N; ++y)
    {
        glBegin(GL_LINE_STRIP);
        for (int x = 0; x < N; ++x)
            glVertex3f(p[x][y].x, p[x][y].y, p[x][y].z * 10);
        glEnd();
    }
    glutSwapBuffers();
}

void timer(int = 0)
{
    const int dx[] = {-1, 0, 1, 0};
    const int dy[] = {0, 1, 0, -1};
    if (rand() % 500 == 0)
        p[rand() % (N - 2) + 1][rand() % (N - 2) + 1].vz += 150;
    for (int y = 1; y < N - 1; ++y)
        for (int x = 1; x < N - 1; ++x)
        {
            P &p0 = p[x][y];
            for (int i = 0; i < 4; ++i)
            {
                P &p1 = p[x + dx[i]][y + dy[i]];
                const float d = sqrt(sqr(p0.x - p1.x) + sqr(p0.y - p1.y) + sqr(p0.z - p1.z));
                p0.vz += K * (p1.z - p0.z) / d * DT;
                p0.vz *= 0.999;
            }

        }
    for (int y = 1; y < N - 1; ++y)
        for (int x = 1; x < N - 1; ++x)
        {
            P &p0 = p[x][y];
            p0.z += p0.vz * DT;
        }
    display();
    glutTimerFunc(1, timer, 0);
}

int main(int argc, char **argv)
{
    for (int x = 0; x < N; ++x)
        for (int y = 0; y < N; ++y)
        {
            p[x][y].x = x * 480 / N;
            p[x][y].y = y * 480 / N;
        }
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(852, 480);
    glutInitWindowPosition(0, 86);
    glutCreateWindow("3d plot");
    glClearColor(0, 0, 0, 1.0);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glFrustum(-100, 100, -100, 100, 100, 2000);
    glMatrixMode(GL_MODELVIEW);
    glTranslatef(-240, -240, -200);
    glRotatef(-30, 1, 0, 0);
    glutDisplayFunc(display);
    timer();
    glutMainLoop();
}


Демонстрация к 45 уроку

Sat May 22 00:00:00 2010



Модель волн в OpenGL. Демонстрация к 45 уроку У меня не хватило времени подобрать хорошие параметры для волн. И я решил сделать отдельное видео с демонстрацией.


Парк в Плаинсборо Нью-Джерси

Sat Aug 28 00:00:00 2010



Полдень, 28 августа, 2010 года. Нью-Джерси, США


Дорога на работу

Sat Sep 11 00:00:00 2010



Дорога на работу. Нью-Джерси.


Race

Sat Sep 25 00:00:00 2010



I little bit played with stop motion.


NJ roads [timelapse]

Sat Oct 2 00:00:00 2010



NJ roads [timelapse]


Prev :: Next
Home :: Diary