Снежинка Коха

Реализация построения Снежинки Коха в трехмерном пространстве на языке С#, используя функции библиотеки OpenGl. Применение специализированных графических библиотек: -Tao.OpenGl; -Tao.Platform. Операции для корректного отображения объекта в окне вывода.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 15.05.2017
Размер файла 189,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Екатеринбург

2015

Уральский Федеральный университет

имени первого Президента России Б.Н.Ельцина ИРИТ-РТФ Кафедра информационных технологий

ОТЧЕТ

по дисциплине: Программирование графических приложений

Лабораторная работа №1

«Снежинка Коха»

Цель

Реализовать построение Снежинки Коха в трехмерном пространстве на языке С#, используя функции библиотеки OpenGl.

Задание

Создать трёхмерную сцену. В плоскости Z=0 построить фрактальную кривую Коха на правильном многоугольнике (треугольнике, квадрате, пятиугольнике и т.д.) Центр многоугольника расположить в начале координат. В качестве «затравки» использовать треугольник. Поворачивая рассчитанную кривую по одной из осей трёхмерной системы координат получить тело вращения фрактальной кривой. Изменяя количество итераций для фрактала, получить объекты разной формы.

Реализация лабораторной работы

Для реализации данной программы использовались специализированные графические библиотеки, такие как: -Tao.OpenGl; -Tao.Platform;

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

Примитивы были созданы при помощи библиотеки Tao.OpenGl:

Gl.glBegin(Gl.GL_LINES);

Gl.glVertex3d(xpos, ypos, 0);

Gl.glVertex3d(x, y, 0);

Gl.glEnd();

Объявленные переменные:

double length; - длина прямой

double xpos, ypos;- координаты 1 точки прямой

double x, y; - координаты 2 точки прямой

Метод Draw_Triangle задает начальные значения для фрактальной кривой и осуществляет чистку экрана, его перегрузка int kolvo задается в текстовом окне и соответствует количеству итераций

private void Draw_Triangle(int kolvo)

{

Gl.glClearColor(255, 255, 255, 1);

Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

Gl.glLoadIdentity();

double dir = 60;

x = -0.7;

y = -0.5;

xpos = 0;

ypos = 0;

length = 1.3;

anT.Invalidate();

Fractal_1(dir, length, kolvo);

dir -= 120;

Fractal_1(dir, length, kolvo);

dir -= 120;

Fractal_1(dir, length, kolvo);

}

Метод Fractal_1 вызывается из метода Draw_Triangle и ведет рекурсивные вычисления координат отрезка

private void Fractal_1(double dir, double length, int kolvo)

{

xpos = x;

ypos = y;

double dirRad = dir / 180 * Math.PI;

if (kolvo == 0)

{

x = x + length * Math.Cos(dirRad);

y = y + length * Math.Sin(dirRad);

Gl.glEnable(Gl.GL_COLOR_MATERIAL);

Gl.glColor3f(1, 0, 0);

Gl.glBegin(Gl.GL_LINES);

Gl.glVertex3d(xpos, ypos, 0);

Gl.glVertex3d(x, y, 0);

Gl.glEnd();

xpos = x;

ypos = y;

Gl.glPopMatrix();

anT.Invalidate();

return;

}

else

{

kolvo--;

length = length / 3;

Fractal_1(dir, length, kolvo);

dir = dir + 60;

Fractal_1(dir, length, kolvo);

dir = dir - 120;

Fractal_1(dir, length, kolvo);

dir = dir + 60;

Fractal_1(dir, length, kolvo);

}

}

Код

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using Tao.OpenGl;

using Tao.FreeGlut;

using Tao.Platform.Windows;

namespace WindowsFormsApplication10

{

public partial class Form1 : Form

{

double length;

double x, y;

double xpos, ypos;

public Form1()

{

InitializeComponent();

anT.InitializeContexts();

}

private void button1_Click(object sender, EventArgs e)

{

Draw_Triangle(int.Parse(textBox1.Text));

}

private void button2_Click(object sender, EventArgs e)

{

Application.Exit();

}

private void Form1_Load(object sender, EventArgs e)

{

Gl.glClearColor(255, 255, 255, 1);

Gl.glEnable(Gl.GL_DEPTH_TEST);

}

private void Draw_Triangle(int kolvo)

{

Gl.glClearColor(255, 255, 255, 1);

Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

Gl.glLoadIdentity();

double dir = 60;

x = -0.7;

y = -0.5;

xpos = 0;

ypos = 0;

length = 1.3;

anT.Invalidate();

Fractal_1(dir, length, kolvo);

dir -= 120;

Fractal_1(dir, length, kolvo);

dir -= 120;

Fractal_1(dir, length, kolvo);

}

private void Fractal_1(double dir, double length, int kolvo)

{

xpos = x;

ypos = y;

double dirRad = dir / 180 * Math.PI;

if (kolvo == 0)

{

x = x + length * Math.Cos(dirRad);

y = y + length * Math.Sin(dirRad);

Gl.glEnable(Gl.GL_COLOR_MATERIAL);

Gl.glColor3f(1, 0, 0);

Gl.glBegin(Gl.GL_LINES);

Gl.glVertex3d(xpos, ypos, 0);

Gl.glVertex3d(x, y, 0);

Gl.glEnd();

xpos = x;

ypos = y;

Gl.glPopMatrix();

anT.Invalidate();

return;

}

else

{

kolvo--;

length = length / 3;

Fractal_1(dir, length, kolvo);

dir = dir + 60;

Fractal_1(dir, length, kolvo);

dir = dir - 120;

Fractal_1(dir, length, kolvo);

dir = dir + 60;

Fractal_1(dir, length, kolvo);

}

}

}

}

Результаты работы

Рис.1

Рис.2

Рис.3

Рис.4

Рис.5

Результат

При выполнении лабораторной работы, перед пользователем появляется окно среды разработки с областью вывода изображения, текстовым полем text_box и двумя кнопками: «Визуализация» и «Выход».

Пользователь может ввести число большее (рис.2-5) или равное 0 (рис.1) и запустить визуализацию нажатием соответствующей кнопки.

Для получения Снежинки Коха, соответствующей другому количеству итераций, необходимо изменить число в текстовом окне и нажать кнопку «Визуализация».

Для выхода из программы пользователь должен нажать кнопку «Выход».

Заключение

снежинка кох библиотека графический

В ходе данной лабораторной работы был реализован алгоритм построения Снежинки Коха с разным числом итераций и графически представлен в трехмерном пространстве при помощи библиотеки OpenGl.

В ходе работы были получены навыки работы в Windows Forms с использованием библиотек OpenGl. Была построена трехмерная сцена, изучены и применены необходимые операции для корректного отображения объекта в окне вывода.

Размещено на Allbest.ru


Подобные документы

  • Программный код OpenGL. Синтаксис команд OpenGL. OpenGL как конечный автомат. Конвейер визуализации OpenGL. Библиотеки, относящиеся к OpenGL. Библиотека OpenGL. Подключаемые файлы. GLUT, инструментарий утилит библиотеки OpenGL.

    курсовая работа [304,9 K], добавлен 01.06.2004

  • Создание программы на языке C++ с использованием графических библиотек OpenGL в среде Microsoft Visual Studio. Построение динамического изображения трехмерной модели объекта "Нефтяная платформа". Логическая структура и функциональная декомпозиция проекта.

    курсовая работа [1,8 M], добавлен 23.06.2011

  • Общие понятия о гироскопах, их классификация и применение. Механические гироскопы, свойства трехстепенного роторного гироскопа. Создание проекта "Гироскоп Фуко" средствами OpenGL и начальная настройка среды разработки. Инициализация объекта вывода и Glut.

    курсовая работа [491,9 K], добавлен 18.11.2013

  • Суть программирования с использованием библиотеки OpenGL, его назначение, архитектура, преимущества и базовые возможности. Разработка приложения для построения динамического изображения трехмерной модели объекта "Компьютер", руководство пользователя.

    курсовая работа [866,8 K], добавлен 22.06.2011

  • Определение области значений функции y=sin(x) и построение графика по точкам с помощью основных конструкций библиотеки OpenGL. Функции вырисовки на экране, обработки сообщений с клавиатуры. Установка размеров области отображения. Главный цикл приложения.

    контрольная работа [87,2 K], добавлен 21.01.2011

  • Назначение и стандарты реализации OpenGL для Windows, порядок подключения графической библиотеки. Основные функции и синтаксис команд. Рисование примитивов, видовые и аффинные преобразования. Моделирование двумерных графических объектов и анимации.

    лабораторная работа [35,0 K], добавлен 04.07.2009

  • Программирование приложения с использованием библиотеки OpenGL и функции для рисования геометрических объектов. Разработка процедуры визуализации трехмерной сцены и интерфейса пользователя. Логическая структура и функциональная декомпозиция проекта.

    курсовая работа [1,1 M], добавлен 23.06.2011

  • Создание программы, с помощью библиотеки OpenGL рисующей проволочный чайник с поворотом рисунка вокруг осей X, Y, Z. Построение отрографической проекции. Установка области отображения. Функция обработки сообщений с клавиатуры. Главный цикл приложения.

    контрольная работа [151,2 K], добавлен 21.01.2011

  • Рассмотрение алгоритма, основанного на использовании рекурсивной функции. Пример построения простого самоподобного фрактала - ковра Серпинского, снежинки Коха, кривых Пеано и Гильберта. Понятие L-система и терл-графика. Составление программы "Koch.m".

    курсовая работа [3,6 M], добавлен 14.12.2012

  • Разработка трехмерной модели приложения "Гоночный автомобиль" на языке С++ с использованием библиотеки OpenGL и MFC, создание программы в среде Visual Studio 6.0. Информационное обеспечение, логическая структура и функциональная декомпозиция проекта.

    курсовая работа [3,9 M], добавлен 29.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.