Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 14.04.2013
Сообщений: 82

Правильно в зависимости ширины и высоты отобразить фрактал (OpenGL)

27.03.2014, 17:38. Показов 782. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть проблемы мне надо правильно в зависимости ширины и высоты отобразить фрактал. Как это сделать? Если возможно то красиво его цветом раскрасить как нить...
вод так я реализую фрактал
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
case "Фрактал Коха":
                            {
                                sWatch.Start();
                                // очищаем буфер цвета 
                                Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
 
                                // очищаем текущую матрицу 
                                Gl.glLoadIdentity();
                                // устанавливаем текущий цвет - красный 
                                Gl.glColor3f(255, 0, 0);
                                // теперь в зависимости от того, как была определана проекция 
                                // очищаем буфер цвета 
                                Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
 
                                double x, y, a;
 
                                double[,] arr = new double[iter, 2];//координаты точек кривой Коха
                                //задаем размеры фрактала
                                x = 0;
                                y = 0;
                                for (int i = 0; i < iter; i++)
                                {
                                    a = rnd.NextDouble();//случайное число в интервале (0; 1)
                                    double t = x;
                                    // если p меньше 0.5, используем формулы первого преобразования, иначе
                                    if (a <= 0.5)
                                    {
                                        x = 0.5 * x + y / (2 * System.Math.Sqrt(3));
                                        y = t / (2 * System.Math.Sqrt(3)) - 0.5 * y;
                                    }
                                    else
                                    {
                                        x = 0.5 * x - y / (2 * System.Math.Sqrt(3)) + 0.5;
                                        y = -t / (2 * System.Math.Sqrt(3)) - 0.5 * y + 1 / (2 * System.Math.Sqrt(3));
                                    }
 
 
                                    arr[i, 0] = -1 * x;
                                    arr[i, 1] = 0.05 - y;
 
 
                                    Gl.glBegin(Gl.GL_POINTS);
 
                                    // теперь в зависимости от того, как была определана проекция 
                                    Gl.glVertex2d(arr[i, 0], arr[i, 1]);
 
 
                                    /// richTextBox1.AppendText(devX.ToString() + "\r\n");
 
 
                                }
                                // завершаем режим рисования 
                                Gl.glEnd();
 
                                // дожидаемся завершения визуализации кадра 
                                Gl.glFlush();
 
 
                                // посылаем сигнал перерисовки элемента AnT. 
                                Ant.Invalidate();
 
                                sWatch.Stop();
                                
                            }
Отрисовка и настроика положения матрицы происходит так
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
 Glut.glutInit();
            // инициализация режима экрана 
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE);
 
            // установка цвета очистки экрана (RGBA) 
            Gl.glClearColor(255, 255, 255, 1);
 
            // установка порта вывода 
            Gl.glViewport(0, 0, Ant.Width, Ant.Height);
 
            // активация проекционной матрицы 
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            // очистка матрицы 
            Gl.glLoadIdentity();
 
            // определение параметров настройки проекции, в зависимости от размеров сторон элемента AnT. 
            if ((float)Ant.Width <= (float)Ant.Height)
            {
                // рисуем вторую вершину в противоположенном углу 
                Gl.glVertex2d(30.0f * (float)Ant.Height / (float)Ant.Width, 30);
            }
            else
            {
                // рисуем вторую вершину в противоположенном углу 
                Gl.glVertex2d(30.0f * (float)Ant.Width / (float)Ant.Height, 30);
            }
 
            // сохранение коэфицентов, которые нам необходимы для перевода координат указателя в оконной системе, в координаты 
            // принятые в нашей OpenGL сцене 
            devX = (float)ScreenW / (float)Ant.Width;
            devY = (float)ScreenH / (float)Ant.Height;
 
            // установка объектно-видовой матрицы 
            Gl.glMatrixMode(Gl.GL_MODELVIEW); 
 
 
            // установка объектно-видовой матрицы 
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2014, 17:38
Ответы с готовыми решениями:

Расчет стоимости жалюзи в зависимости от их ширины, высоты и используемого материала
Помогите,пожалуйста, написать программу на языке си шарп. Жалюзи. Программа позволяет рассчитать стоимость жалюзи в зависимости от...

Организовать таблицы, чтобы в зависимости от значений Типа (Глубины) /Высоты/Ширины получать цену
Здравствуйте. Такая ситуация: имеется товар с параметрами Тип(Глубина)/Высота/Ширина = Цена. Как организовать таблицы так, чтобы в...

Автоматическое изменение ширины колонок в зависимости от ширины StringGrid
Здравствуйте, Уважаемые! Подскажите пожалуйста как написать процедуру, которая бы меняла ширину колонок в СтрингГриде при изменении ширины...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2014, 17:38
Помогаю со студенческими работами здесь

Фрактал openGL
Здравствуйте, прошу помощи с построением фрактала. Абсолютно не понимаю как реализовать, набросала какой-то вариант (который по сути даже...

Изменение высоты, но не ширины
Вообще-то, у меня нет какого-то задания и т. д. и т. п. но я хотел бы узнать, как менять ширину картинки, но не высоту, а то в Mozila,...

Фрактал дерево opengl
Здравствуйте, есть проект который рисует фрактал дерево. Код #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

Зависимость ширины ячейки от высоты
Здравствуйте, не могу сообразить как сделать что-бы ширина ячейки таблицы зависела от её высоты? При этом высота ячейки должна зависеть от...

Задание таблицы ширины и высоты
Я задаю высоту и ширину ячеек таблицы в файле css при помощи td.ghost1 { height:100px;width:100px;}. Проблема в том , что изменяется...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru