Научный журнал
Современные наукоемкие технологии
ISSN 1812-7320
"Перечень" ВАК
ИФ РИНЦ = 0,940

РАЗРАБОТКА АЛГОРИТМА РАБОТЫ С ТРЕХМЕРНОЙ ГРАФИКОЙ С ПОМОЩЬЮ GDI+ И ДЕМОНСТРАЦИЯ ЕГО В СРЕДЕ Visual Basic

Савченко А.В. 1 Кораблева О.И. 1
1 Авиационный колледж
1. С.Н. Лукин – Понятно о Visual Basic 2005, 878с.;
2. К. В. Постнов – Компьютерная графика, Москва 2009, 249 стр.;
3. http://www.wikipedia.org/– интернет энциклопедия
4. http://www.cyberforum.ru/– форум программистов

Введение в работу – Графическая библиотека GDI была создана как интерфейс Windows для представления графических объектов. Она отвечала за отрисовку линий и кривых, отображение шрифтов и обработку палитры. С выходом Windows XP появился потомок подсистемы, GDI+, основанной на C++ .GDI+ является улучшенной средой для 2D-графики, в которую добавлены такие возможности, как сглаживание линий (antialiasing), использование координат с плавающей точкой градиентная заливка . Однако ни GDI ,ни в GDI+ нет растеризации для отрисовки 3D-графики.

Цель настоящей работы – разработка алгоритма и графического модуля, демонстрирующих возможности GDI+ по работе с трехмерной графикой.

Разработка может использоваться в учебном процессе для ознакомления студентов со стандартными средствами GDI+ и их возможными комбинациями с целью ознакомления с максимально эффективным алгоритмом разработки трехмерной графики, а так же для моделирования простых трехмерных объектов, используя разработанный алгоритм и библиотеку GDI+.

Входные и выходные данные

• Тип фигуры(призма, пирамида, бипирамида, звезда);

• Параметры фигуры(цвет, радиус , высота, скорость вращения, количество сторон);

• Требования к входным данным:

• Вхождение в диапазон

• 0<= цвет <=255;

• 64<= радиус <=128;

• 3<= количество сторон <=8;

• -128<= высота <=128;

• -1<= скорость вращения <=1.

Выходными данными являются:

Фигуры, отображаемые на экране, параметры которых изменяются.

Требования к выходным данным:

• Фигуры не должны мерцать ;

•Заливка не должна выходить за пределы фигуры ;

• Параметры фигуры и сама фигура должны меняться по таймеру .

Алгоритм:

Координаты:

1. Задаются параметры фигуры

2. В зависимости от типа фигуры задаются центры одной или двух окружностей(Две для призмы) и вершины( призма -0, пирамида -1, бипирамида -2)

3. В зависимости от заданного количества окружности разбиваются по формуле:

c(i).X = Fix(радиус * Math.Cos(скорость + №точки * Math.PI / кол-во сторон))

c(i).Y = Fix(-30 * Math.Sin(скорость + №точки * Math.PI / кол-во сторон))

Прорисовка:

4. Из массива координат создается массив вершин путем объединения нескольких координат в отдельном массиве.

5. Из массива координат делается массив вершин путем объединения нескольких координат в другой массив.

6. Точки разбиения окружности соединяются друг с другом и с вершиной(-ами)

7. Для заливки граней выбираются 3(4) точки одной грани и соединяются. Для заливки основания(-й) выбираются первая, вторая и последняя точки.

8. Вывод на экран осуществляется в бесконечном цикле буферизации.

Фрагмент Кода

For i = 1 To n//координатный цикл

c(i).X = Fix(r * Math.Cos( i * Math.PI / an))//вычисление координаты x

c(i).Y = Fix(-30 * Math.Sin( i * Math.PI / an)) вычисление координаты y

If i <= n / 2 Then h(i) = 1 / 40 * centerpz Else h(i) = -1 / 40 * centerpz//корреляционный параметр для перевода координаты y в трехмерное пространство.

c(i).Y = 96 * c(i).Y / (100 + h(i))/перевод координаты y в трехмерное пространство.

c(n + 1).X = c(1).X

c(n + 1).Y = c(1).Y//задние рвенства последнео элемента массива равным первому для замыкания окружности

Next}

Dim Lgb As New LinearGradientBrush( _// Градиентная заливка

New Point(c(1).X, c(1).Y), _ // первая точка

New Point(c(n).X, c(n).Y), _ // вторая точка

Color.FromArgb(190, i2, j, k), _// первый цвет

(Color.FromArgb(190, k, i2, j))) // второй цвет

Lgb.SetSigmaBellShape(0.5, 1)//коэффициент градиента

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick//изменение параметра радиус по таймеру

If HScrollBar5.Value = 32 Then bul2 = False

If HScrollBar5.Value = 128 Then bul2 = True

If bul2 = True Then HScrollBar5.Value -= 1//уменьшать до минимального

If bul2 = False Then HScrollBar5.Value += 1//увеличивать до максимального.

r = HScrollBar5.Value//присвоение значения переменной

TextBox5.Text = r // вывод значния переменной.

Описания результатов решения

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

приложений.

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

Скриншоты:

sav1.tif 

 

sav2.tif 

 

sav3.tif 


Библиографическая ссылка

Савченко А.В., Кораблева О.И. РАЗРАБОТКА АЛГОРИТМА РАБОТЫ С ТРЕХМЕРНОЙ ГРАФИКОЙ С ПОМОЩЬЮ GDI+ И ДЕМОНСТРАЦИЯ ЕГО В СРЕДЕ Visual Basic // Современные наукоемкие технологии. – 2014. – № 5-1. – С. 203-204;
URL: https://top-technologies.ru/ru/article/view?id=33846 (дата обращения: 19.04.2024).

Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»
(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

«Фундаментальные исследования» список ВАК ИФ РИНЦ = 1,674