Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/29: Рейтинг темы: голосов - 29, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 25
1

Построение многоугольников с разным количеством вершин

01.03.2018, 17:56. Показов 5286. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Буду благодарен, если кто-то поможет с первой лабой по OpenGL, заранее спасибо. С виду легкая программа, но до этого не программировал мультимедия, мне проще уже в коде разобраться, сейчас нет времени читать лит-ру , главное сдать)

Составить программу построения многоугольников с разным количеством вершин (от 3 до 6) различных размеров и цветов в разных частях окна с использованием случайного выбора. Подписать кожных фигуру ее названием. Последовательно стереть все фигуре и Подписи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2018, 17:56
Ответы с готовыми решениями:

Координаты вершин многоугольников
...люди добрые....не знаю как это сделать - . Среди заданных координатами вершин многоугольников...

Найти количество многоугольников и их вершин
Вводится n - кол-во вершин потом их координаты. Затем вводятся 2 числа - номера 2-х любых вершин....

Прочесть из файла данные вершин двух многоугольников
Помогите, пожалуйста, нужно написать программу на с#. Прочесть из файла данные вершин двух...

FLTK построение правильных многоугольников
Привет всем! Кто может пояснить такую вещь: Вот задание: Определите класс Regular_polygon. В...

7
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 25
05.03.2018, 16:26  [ТС] 2
Еще актуально
0
5158 / 2770 / 465
Регистрация: 05.10.2013
Сообщений: 7,321
Записей в блоге: 147
07.03.2018, 22:53 3
Для начала, найдите в интернете рабочий пример, который строит многоугольник состоящий из 3 вершин (по сути - треугольник). Попробуйте запустить у себя найденный код. От этого уже можно танцевать.

Допустим, если вы работаете в Windows (а не на популярном Mac или Linux) и вы используете C++ (а не Java, Delphi, C#, JavaScript и т.д.), а так же у вас установлена среда Visual Studio, то можете попробовать запустить мой пример: Triangle_OpenGL33WinAPI.zip
0
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 25
20.03.2018, 21:14  [ТС] 4
Таким образом я сделал для треугольников :
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
public Form1()
        {
            InitializeComponent();
            gl = openGLControl1.OpenGL;
            Random rand = new Random();
            for (int i = 0; i < 10; i++)
            {
                x[i] = rand.Next(76) - 38;
                y[i] = rand.Next(36) - 18;
                roz[i] = rand.Next(2) + 1;
                a[i] = rand.NextDouble();
                b[i] = rand.NextDouble();
                c[i] = rand.NextDouble();
            }
        }
        int i = 0;
        private void openGLControl1_OpenGLDraw(object sender, SharpGL.RenderEventArgs args)
        {
            paint();
        }
 
        public void paint()
        {
            Random rand = new Random();
            OpenGL gl = openGLControl1.OpenGL;
 
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
 
            gl.LoadIdentity();
 
            gl.Translate(0f, 0.0f, -50.0f);
 
 
            gl.Begin(OpenGL.GL_TRIANGLE_STRIP);
 
            i = kil;
            while (i < 10)
            {
                gl.Color(a[i], b[i], c[i]);
                gl.Vertex(x[i], y[i] + roz[i]);
                gl.Vertex(x[i] + roz[i], y[i] - roz[i]);
           
               
 
                i++;
            }
            i = kil;
 
            gl.End();
 
            gl.Flush();
        }
Но если сменить triangles на polygon, то каждый последующий многоугольник начинается с предыдущего и получается какая-то каша...
0
1230 / 66 / 16
Регистрация: 23.04.2007
Сообщений: 127
20.03.2018, 21:35 5
Думаю проще будет нарисовать правильный многоугольник через GL_TRIANGLE_FAN с N вершин.
Количество передаваемых точек N + 2
Первая точка - центр описанной окружности, остальные лежат на этой описанной окружности и являются по сути вершинами многоугольника, последняя точка совпадает со 2, чтобы замкнуть фигуру, если я ничего не путаю про отрисовку через GL_TRIANGLE_FAN.
Для треугольника точки на окружности будут через 360 / 3 = 120 градусов, для четырехугольника через 360 / 4 = 90 и т.д.
Как найти точки на окружности думаю понятно - через Sin, Cos и радиус.
Нарисовал кривой рисунок, но думаю будет понятно.
Изображения
 
0
5158 / 2770 / 465
Регистрация: 05.10.2013
Сообщений: 7,321
Записей в блоге: 147
20.03.2018, 21:43 6
Цитата Сообщение от nothing1 Посмотреть сообщение
gl.Begin
gl.Begin мало кто сейчас использует. Этот метод рисования считается deprecated/legacy с 2004 года. Используйте шейдерный OpenGL.

Пример, как нарисовать треугольник на шейдерном OpenGL на C# + WinForms: TriangleInOpenTkWinForms.zip
0
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 25
23.03.2018, 20:19  [ТС] 7
Да мне и устаревший метод пойдет, только вот сколько не сижу не могу я додуматься как бы мне рандомить такие координаты чтобы многоугольники нормально получались :c
0
5158 / 2770 / 465
Регистрация: 05.10.2013
Сообщений: 7,321
Записей в блоге: 147
23.03.2018, 21:00 8
Многоугольники могут быть только выпуклые или могут быть невыпуклые?

Построение многоугольников с разным количеством вершин
0
23.03.2018, 21:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2018, 21:00
Помогаю со студенческими работами здесь

Кости с разным количеством граней
Друзья, помогите, пожалуйста решить задачу: В мешке лежат пять игральных костей с разным...

Тест с разным количеством вопросов
Здравствуйте. Воззможно данная тема поднималась, но меня интересует следующее, я пишу...

Дублирующиеся записи с разным количеством
Добрый день! Набор записей может содержать позиции с одинаковым названием, но разным...

анализ анкет с разным количеством респондентов
Добрый день! Статистику изучала довольно давно и довольно поверхностно, но вот возникла проблемка....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru