Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Я код на C++ набрал сам. Строил кривую Безье, но "прилипал" к нулю. То есть я задаю точки далеко от нуля, а он строил из нуля, а потом только обходил предложенные точки. Потом я нашёл Ваш сайт и эту статью. Оказалось, что я забыл возвести t в...
просто я не так понял, здесь мы вращаем точки куба что вращает сам куб. Мне нужно вращать просто 3д объект , данный способ не подходит
Задавайте объект в мировых координатах. Вращайте его относительно мировой системы координат. А при отрисовке преобразуйте в экранные координаты. Посмотрите пример преобразования в экранные координаты.
Это вращение по мировым осям ? Если да то как сделать по осям объекта ?
Добрый вечер! Область прорисовки остается пустой. Чего-то не хватает. Объясните плз, чего? Рамиль.

Счетчики и рейтинг

Рейтинг@Mail.ru
Скриншот к примеру
Среда программирования: 
Visual Studio 2010
Статья по теме: 

Данная программа демонстрирует Т-квадрат. При запуске программы выполняется построение.
Алгоритм:
На вход функции вырисовки drowtT подаются координаты центра квадрата, длина его стороны(в пикселях) и количество итераций;
Вычисляются координаты вершин квадрата и по ним вырисовывается квадрат;
Если количество итераций не равно 0, то запускаем для каждой вершины функцию drowT, уменьшая длину стороны в половину.

Код программы: 

#include <glut.h>
 
void drowT(int x, int y, int l, int it)
{
    int X1 = x - l / 2; //координаты вершин
    int X2 = x + l / 2;
    int Y1 = y - l / 2;
    int Y2 = y + l / 2;
    glColor3f(0.7 / it, 0.7 / it, 0.7);
    glVertex2i(X1, Y1);
    glVertex2i(X1, Y2);
    glVertex2i(X2, Y2);
    glVertex2i(X2, Y1);
    if(it != 0){
        drowT(X1, Y1, l / 2, it - 1); //вызов рекурсии для каждой из вершин
        drowT(X1, Y2, l / 2, it - 1); //квадрата
        drowT(X2, Y2, l / 2, it - 1);
        drowT(X2, Y1, l / 2, it - 1);
    }    
}
 
void reshape(int w, int h)
{   
    glClearColor(1.0, 1.0, 1.0, 0.0);
    glViewport(0, 0, w, h);
 
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, w, 0, h);
 
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
 
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
 
    glBegin(GL_QUADS);
        drowT(400, 400, 400, 10); //вызов функции вырисовки
    glEnd();   
 
	glutSwapBuffers();
}
 
int main(int argc, char *argv[])
{
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
      glutInitWindowSize(800, 800);
 
      glutCreateWindow("Levy");
 
      glutDisplayFunc(display);
      glutReshapeFunc(reshape);
 
      glutMainLoop();
}

Прикрепленный файлРазмер
T-quard.zip152.95 кб