0 / 0 / 0
Регистрация: 11.10.2016
Сообщений: 14
1

Изменение цвета фрактала, GLUT

15.05.2018, 10:23. Показов 1613. Ответов 2
Метки нет (Все метки)

Помогите изменить цвет последней ветви, пожалуйста)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#define GL_GLEXT_PROTOTYPES
#include <windows.h>
#include <GL/gl.h>
#include <glut.h>
#include <GL/glu.h>
#include <math.h>
 
/* Обьявление функции, которая будет рисовать фрактал */
void func(double x, double y, double angle, double len, int deph);
 
/* Функция, прорисовывающая изображение в окне */
void display(void) {
    /* Очистка экрана цветом по-умолчанию */
    glClear(GL_COLOR_BUFFER_BIT);
 
    /* Задание цвета для рисования */
    glColor3f(1.0f, 0.2f, 0.5f);
 
    /* Начало рисования. Вершины 2n и 2n+1 будут обьединены в линию*/
    glBegin(GL_LINES);
 
    /* Вызов функции, рисующей фрактал. В функции передаются вершины в буфер */
    func(50, 50, 1.1, 50, 12);
    /* Функция, выгружающая буфер в сцену */
    glEnd();
 
    /*  Прорисовка текущего буфера */
    glFlush();
}
 
/* Функция, определённая выше */
void func(double x, double y, double angle, double len, int deph) {
    double angp = 0.5; //изменение угла
    for (int i = -1; i<5; i += 2) {
        //если не достигнута глубина рекурсии - продолжить построение фрактала
        if (deph>0)
            func(x + cos(angle + i * angp)*len / 2, y + sin(angle + i * angp)*len / 2, angle + i * angp, len / 2, deph - 1);
        /* В буфер записываются вершины. Эти две вершины будут соединены в прямые между собой*/
        glVertex2d(x, y);
        glVertex2d(x + cos(angle + i * angp)*len / 2, y + sin(angle + i * angp)*len / 2);
    }
}
 
void init(void) {
    /* Установка цвета по-умолчанию */
    glClearColor(0.0, 0.0, 0.0, 0.0);
    /* Задаются параметры сцены. Матрица преобразований для проекции,
    координаты сдвигаются в 0 и границы экрана устанавливаются в заданные*/
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 100.0, 0.0, 100.0, -100.0, 100.0);
}
/* Позволяет закрыть программу нажатием клавиши "эскейп" */
void processNormalKeys(unsigned char key, int x, int y) {
    if (key == 27)
        exit(0);
}
 
 
int main(int argc, char** argv) {
    /* Инициализируются буферы для glut-a*/
    glutInit(&argc, argv);
    /* Задаются режимы смешивания цветов и количество буферов*/
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    /* Задаётся размер окна 500 на 500*/
    glutInitWindowSize(500, 500);
    /* Окно сдвигается на 100 единиц по икс и по игрек */
    glutInitWindowPosition(100, 100);
    /* Создаётся окно с названием, размером и смещениями, которые были указаны */
    glutCreateWindow("Fractal");
    /* Вызывается функция инициализации, задания начальных параметров */
    init();
    /* Устанвливается фукция прорисовки, переданная как параметр */
    glutDisplayFunc(display);
    /* Задаётся функция, которая будет обрабатывать нажатия клавиш*/
    glutKeyboardFunc(processNormalKeys);
    /* Начинается выполнение прорисовки и обработка клавиш*/
    glutMainLoop();
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2018, 10:23
Ответы с готовыми решениями:

Смена цвета для текста glut
Здравствуйте! Стоит задача создать класс &quot;Окно&quot; с заданными координатами его положения. Хочется...

Работа с трехмерными примитивами. Вокруг конуса GLU вращаются сфера GLUT и конус GLUT
создание виртуальной камеры gluLookAt и добавление эффектов анимации. вот само задание Вокруг...

Изменение цвета текста, когда код цвета берется с сервера
Есть задание : Отправить на сервер название цвета, получить от сервера цвет в формате RGB и...

Изменение цвета названия файла/папки (либо цвета подсветки)
Привет супер уважаемые супер форумчане!) Очень интересно, есть ли какой-то способ изменить цвет...

2
3217 / 1407 / 232
Регистрация: 26.02.2009
Сообщений: 7,193
Записей в блоге: 5
18.05.2018, 17:14 2
Может так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* Функция, определённая выше */
void func(double x, double y, double angle, double len, int deph) {
    double angp = 0.5; //изменение угла
    for (int i = -1; i<5; i += 2) {
        //если не достигнута глубина рекурсии - продолжить построение фрактала
        if (deph>0)
            func(x + cos(angle + i * angp)*len / 2, y + sin(angle + i * angp)*len / 2, angle + i * angp, len / 2, deph - 1);
        /* В буфер записываются вершины. Эти две вершины будут соединены в прямые между собой*/
        /*при глубине = 0 меням цвет примитива(линии)*/
        if(deph = 0){
            glColor3f(1.0f, 0.0f, 0.0f);
        }else{
            glColor3f(1.0f, 0.2f, 0.5f);
        }
        
        glVertex2d(x, y);
        glVertex2d(x + cos(angle + i * angp)*len / 2, y + sin(angle + i * angp)*len / 2);
    }
}
0
0 / 0 / 0
Регистрация: 11.10.2016
Сообщений: 14
18.05.2018, 21:39  [ТС] 3
Что-то не получилось
вот, что вышло)
Изменение цвета фрактала, GLUT
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2018, 21:39
Помогаю со студенческими работами здесь

Задайте изменение цвета кнопок и цвета шрифта на кнопках формы в ходе выполнения программы
1. Задайте изменение цвета кнопок и цвета шрифта на кнопках формы в ходе выполнения программы. 2....

Изменение цвета прямоугольника, увеличивая или уменьшая составляющие цвета (почему не работает программа?)
2.2 Работа с кнопками и цветом Приложение позволяет изменять цвет прямоугольника, увеличивая или...

Плавное изменение цвета фона по времени в рандомные цвета
В общем, есть изображение (фон), мне необходимо, чтобы оно плавно окрашивалось в различные цвета...

Оперативное изменение цвета фона и цвета символов строки.
я уже задала строку,вывела на экран в виде бесконечно бегущей строки. осталось сделать оперативное...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru