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

Алгоритм Брезенхема для генерации окружности C# OpenGl

12.09.2016, 19:34. Показов 4236. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Возник очень важный вопрос. Как нарисовать круг по алгоритму Брезенхема (связность пикселей - 4) с использованием C# OpenGl?
Как нарисовать круг по алгоритму Брезенхема в W.Form без OpenGl я знаю,а с использованием сего возникли проблемы.
Использую Tao Framework.
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2016, 19:34
Ответы с готовыми решениями:

Алгоритм Брезенхема для генерации окружности
Что-то не получается, кто может помочь? (Данный алгоритм также является целочисленным. В...

Алгоритм Брезенхема для генерации окружности
Очень срочно, пожалуйста Нужно для матлаба

Алгоритм Брезенхема для генерации окружности
Нужно написать программу, которая чертит 100 окружностей со случайно выбранными параметрами,...

Алгоритм Брезенхема для окружности
Здравствуйте, есть задание - Выполнить отрисовку окружностей радиусов 3*(R+9), 5*(R+9), 10*(R+9)...

2
Программист велосипедист
161 / 48 / 7
Регистрация: 23.11.2014
Сообщений: 313
16.09.2016, 09:39 2
Можно по разному это сделать
например через VBO указав const вершины круга и от рисовать оные
0
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 6
27.09.2016, 18:23  [ТС] 3
Спасибо.
Не подскажете как еще сделать чтобы была связность пикселей 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
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
81
82
83
84
85
86
87
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Tao.OpenGl;
using Tao.Platform.Windows;
using Tao.FreeGlut;
 
namespace lab1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            AnT.InitializeContexts();
            
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
          
            Glut.glutInit();
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_SINGLE);
            Gl.glClearColor(255, 255, 255, 1); 
            Gl.glViewport(0, 0, AnT.Width, AnT.Height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluOrtho2D(0.0, AnT.Height, 0.0, AnT.Width);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            int x = System.Convert.ToInt32(CircleX.Text);
            int y = System.Convert.ToInt32(CircleY.Text);
            int r = System.Convert.ToInt32(CircleR.Text);
            pCil.Text = System.Convert.ToString(Math.Round(Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2)), 3));
            tgCil.Text = System.Convert.ToString(Math.Round(Math.Atan(y / x), 3));
            ZCil.Text = "0.000";
            int yd = r;
            int xd = 0;
            int d = 2-2 *r;
            Gl.glPointSize(1);
            Gl.glBegin(Gl.GL_POINTS);
                      
 
            while (xd <= yd)
            {
                Gl.glVertex3d(x + xd, y + yd, 0);
                Gl.glVertex3d(x - xd, y + yd, 0);
                Gl.glVertex3d(x + xd, y - yd, 0);
                Gl.glVertex3d(x - xd, y - yd, 0);
                Gl.glVertex3d(x + yd, y + xd, 0);
                Gl.glVertex3d(x - yd, y + xd, 0);
                Gl.glVertex3d(x + yd, y - xd, 0);
                Gl.glVertex3d(x - yd, y - xd, 0);
              
                if (d < 0)
                    d += (2 * xd) + 3;
                else
                {
                    d += (2 * (xd - yd)) + 5;
                    yd -= 1;
                }
                xd++;
 
            }
 
            Gl.glEnd(); 
            Gl.glFlush();
            AnT.Invalidate();
        }
 
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2016, 18:23
Помогаю со студенческими работами здесь

Алгоритм Брезенхема построения окружности на С++
помогите найти или написать программу алгоритм Брезенхема построения окружности на С++ для Borland...

Реализовать алгоритм Брезенхема, для дуг окружности и дуг эллипса
Надо реализоавать алгоритм Брезенхема, для дуг окружности и дуг эллипса. Для окружности и самого...

Алгоритм Брезенхема: как вводить радиус окружности, длину линии и цвет данных фигур
Доброго времени господа-форумчане!Мне нужно доработать программу, т е форму.Таким образом чтоб...

Алгоритм Брезенхема для 3-х координат
есть алгоритм Брезенхема для построения прямой по двум координатам, а я хочу сделать по трём...


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

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

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