Курсовая работа Тема: «Сечение многогранников»





Скачать 387.89 Kb.
НазваниеКурсовая работа Тема: «Сечение многогранников»
страница2/3
Дата публикации24.03.2015
Размер387.89 Kb.
ТипКурсовая
100-bal.ru > Информатика > Курсовая
1   2   3
Глава III. Визуализация
3.1 Способы визуализации трехмерного пространства
Для визуализации используются два вида проекций: параллельные (аксонометрические) (на рисунке слева) и центральные (перспективные)

(на рисунке справа). При построении аксонометрической проекции пространственного тела его отдельные точки сносятся на плоскость проекции параллельным пучком лучей, а при построении центральной проекции – пучком лучей исходящих из одной точки, соответствующей положению глаз наблюдателя. Частным случаем аксонометрической проекции является проекция ортографическая, при построении которой плоскость проекции выравнивается параллельно одной из координатных плоскостей.

3.2 Перекрытие
Под перекрытием понимается тот факт, что невозможно одновременно видеть все грани многогранника и какие - то грани обязательно окажутся невидимыми. Проблема состоит в том, как узнать какие грани видны, а какие нет. В проекте мы рассматриваем только выпуклые многогранники, поэтому для реализации перекрытия используется тот факт, что нормальный вектор к каждой грани направлен извне. Т.е. если использовать ортографическую проекцию, то тот факт, что координатная составляющая (оси проекции) нормального вектора положительна, то грань видима, если отрицательна, то грань перекрыта.

3.3 Освещенность
Освещенность граней вычисляется путем, вычисления угла (синуса угла) между нормальным вектором к грани и осью ортографической проекции.
Глава IV. Создание компьютерного приложения
4.1 Постановка требований к реализуемому проекту


  1. Простота использования.

  2. Полнота необходимых инструментов и возможностей.

  3. Интерактивность.

  4. Быстрота работы.

  5. Простота создания входного файла.


4.2 Разработка интерфейса программы
При разработке интерфейса программы уклон делался на стандартизацию меню и удобство использования. Также необходима функция встроенных подсказок (всплывающих и в строке состояния).
4.2.1 Окна проекций

В программе используются три окна проекции: вид сверху, вид слева, вид спереди, перспектива. Размер окон проекции изменяется путем перемещения цента разделителя. Также здесь показаны оси координат. Существует возможность включения координатной сетки.


4.2.2 Меню пользователя

Файл

Открыть (загрузка файла многогранника).

Сохранить (сохранение файла).

Выход (выход из программы).

Правка

Сброс (сброс всех измененных параметров).

Вид

Каркас (отображаются ребра многогранника).

Заливка (вывод граней, с расчетом их освещенности).

Обозначить (обозначить вершины многогранника).

Сетка (вывод сетки координат).

Инструменты

Выбрать (позволяет выбирать и перемещать точки задающие сечение).

Переместить (перемещение многогранника).

Повернуть (поворот многогранника).

Масштаб (масштаб окон проекций).

Стирка (позволяет отключать заливку выбранной грани).

Заливка (позволяет включить заливку выбранной грани).

Ограничить (ограничение манипулирования сценой по осям координат).

Цент поворота (изменение центра поворота).

Распространить (изменять координаты точек задающих сечение вместе с координатами многогранника).

Сечение

Построить (построение сечения путем задания трех точек плоскости сечения).

Удалить (удаление сечения).

Вид (настройка вида сечения).

Привязать (привязка выбранной точки сечения к элементам многогранника).

Просмотр (окно просмотра сечения).

Настройка

Цвет (вызов диалога изменения цветовой схемы)
4.2.3 Основные методы работы

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

Вывод многоугольника сечения производится с помощью поворота плоскости сечения в положение параллельности плоскости XOY.


Заключение
В заключении данного проекта рассмотрим возможные пути дальнейшего развития проекта и его использования, а также оценку выполнения поставленной задачи и отметим полученные результаты. Поставленная перед началом работы цель: создание инструмента, позволяющего наглядно и интерактивно изучать пространственные тела и их сечения – реализована.

Создано приложение, которое позволяет загружать пространственные тела и манипулировать ими – это уже можно использовать при начальном изучении пространственных тел. Далее в программе реализована функция построения сечения пространственных фигур плоскостью, которая задается тремя точками, координаты которых можно изменять. Минусом программы является возможность изучения только выпуклых фигур и невозможность построения более одного сечения.

Пути дальнейшего развития проекта:

  1. Построение нескольких сечений;

  2. Возможность загрузки невыпуклых фигур;

  3. Подбор задач решаемых с помощью созданного приложения;

  4. Разработка методик применения программы в обучении;

  5. Создание конструктора пространственных тел;

  6. Создание интерактивного инструмента для построения сечений пространственных фигур аксиоматическим методом («Живая стереометрия»);

  7. Создание обучающего модуля и методического сопровождения к нему;

  8. Применение на практике.

Изучаемая в данной курсовой работе тема, должна быть изучена до конца, так как это может найти целесообразное и удачное применение на практике.

Приложение
Текст программы
unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, Menus, ExtCtrls, jpeg, ToolWin, StdCtrls, ImgList;

type

Point=record x,y,z:real end; {координаты точки}

Vector=record x,y,z:real end; {координаты ветора}

type

TForm1 = class(TForm)

StatusBar1: TStatusBar; StatusBar2: TStatusBar; MainMenu1: TMainMenu;

N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem;

N20: TMenuItem; N21: TMenuItem; N22: TMenuItem; N18: TMenuItem; N25: TMenuItem; N30: TMenuItem;

N31: TMenuItem; N32: TMenuItem; N33: TMenuItem; OD1: TOpenDialog; SD1: TSaveDialog;

PTop: TPanel; ITop: TImage; PFront: TPanel; PLeft: TPanel; PPerspective: TPanel; IFront: TImage;

ILeft: TImage; IPerspective: TImage; GroupBox1: TGroupBox; Vertikal: TPanel; Horizontal: TPanel; Panel3: TPanel;

Centr: TPanel; ImList1: TImageList; N23: TMenuItem; ToolBar1: TToolBar;

ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton;

ToolButton5: TToolButton; ToolButton6: TToolButton; ToolButton7: TToolButton; ToolButton8: TToolButton;

ToolButton9: TToolButton; ToolButton10: TToolButton; ToolButton14: TToolButton; ToolButton19: TToolButton;

ToolButton11: TToolButton; ToolButton12: TToolButton; Label1: TLabel; ToolButton13: TToolButton;

N26: TMenuItem; N27: TMenuItem; N28: TMenuItem; N29: TMenuItem; N34: TMenuItem; N35: TMenuItem;

N36: TMenuItem; N37: TMenuItem; N38: TMenuItem; N39: TMenuItem; N40: TMenuItem; N41: TMenuItem;

N42: TMenuItem; N43: TMenuItem; N45: TMenuItem; N46: TMenuItem; N47: TMenuItem; N51: TMenuItem;

IntWiew: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem;

N12: TMenuItem; N13: TMenuItem; N14: TMenuItem; N15: TMenuItem; N16: TMenuItem; N17: TMenuItem;

N24: TMenuItem; N19: TMenuItem; Mag1: TMenuItem; Mag2: TMenuItem; Mag3: TMenuItem;

procedure N5Click(Sender: TObject);

procedure CentrMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure CentrMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); procedure N2Click(Sender: TObject);

procedure ITopClick(Sender: TObject); procedure IFrontClick(Sender: TObject); procedure ILeftClick(Sender: TObject);

procedure ITopMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

procedure IFrontMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

procedure ILeftMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

procedure N3Click(Sender: TObject); procedure N33Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure FormPaint(Sender: TObject);

procedure ITopMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure IFrontMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure ILeftMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure N25Click(Sender: TObject); procedure N21Click(Sender: TObject);

procedure N22Click(Sender: TObject); procedure N8Click(Sender: TObject);

procedure N16Click(Sender: TObject); procedure IntWiewClick(Sender: TObject);

procedure N27Click(Sender: TObject); procedure N28Click(Sender: TObject);

procedure N29Click(Sender: TObject); procedure N34Click(Sender: TObject);

procedure N36Click(Sender: TObject); procedure N37Click(Sender: TObject);

procedure N9Click(Sender: TObject); procedure N10Click(Sender: TObject);

procedure IPerspectiveClick(Sender: TObject);

procedure N41Click(Sender: TObject); procedure N14Click(Sender: TObject);

procedure N18Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject);

procedure ToolButton5Click(Sender: TObject); procedure ToolButton6Click(Sender: TObject);

procedure ToolButton7Click(Sender: TObject); procedure ToolButton8Click(Sender: TObject);

procedure ToolButton9Click(Sender: TObject); procedure ToolButton12Click(Sender: TObject);

procedure ToolButton11Click(Sender: TObject); procedure ToolButton19Click(Sender: TObject);

procedure ToolButton13Click(Sender: TObject); procedure N24Click(Sender: TObject);

procedure N19Click(Sender: TObject); Function Normal (A,B,C:Point):Vector;

procedure Mag1Click(Sender: TObject); procedure Mag2Click(Sender: TObject);

procedure Mag3Click(Sender: TObject);

private

{ Private declarations }

Procedure DrawGrane;

public

{ Public declarations }

end;

const Gran=10000;{Максимум ганей}

Pointer=10000;{Максимум вершин}

Lok=0.00001;{Погрешность сечения}

SizeT=5;{Размер точек сечения}

Sumbol='A';{Обозначение точек}

type

TView=array [1..gran]of record Visible:boolean;{Флаг активного окна}

Paint:boolean;

BrushGr:boolean;{Флаг заливки грани}

PenRb:boolean;{Флаг отрисовки ребер}

Intersection:boolean;{Флаг наличия сечения}

ColorGr,ColorRb:TColor{Цвет: грани,ребра} end;

TMainVar=record Cx,Cy:integer; Mash:real;Net:boolean; end;

var

Form1: TForm1;

V:array[1..pointer]of Point;{координаты вершин}

E:array[1..gran,0..pointer]of integer;{грани [номер грани, номер вершины]}

Scene:array[1..4]of record G:TView; M:TMainVar; Active:boolean; end;

M,N:word;{количество граней, количество вершин}

X0,Y0,Num:integer;{координаты щелчка мыши}

ActivColor,ColorEder,ColorUnEder,ColorRebro,ColorIntersection,ColorPointIntersection,ColorNet:TColor;{Цвет: активного окна}

InterPoint:array[1..3]of Point;

Count:byte;

kl:integer;

A,B,C,D,P1,P2,P3:real;

PanelWindow:array[1..4]of TPanel;

WindowProection:array[1..4]of TImage;

NameWindows:array[1..4]of string=('Вид сверху','Вид спереди','Вид слева','Перспектива');{Название окон}

OsiX:array[1..4]of string=('x','x','y','x');

OsiY:array[1..4]of string=('z','y','x','z');

OsiZ:array[1..4]of string=('y','z','z','y');

Magnit:array[1..3]of TMenuItem;

MagPoint:array[1..3,1..2]of Point;

First:array[1..3]of boolean;

MPI:boolean;

implementation

uses Unit2,Unit3;

//Перевод вещественных координат в экранные

Function Ser(win:byte; T:Point; Main:TMainVar):TPoint;

var CopySer:Tpoint;

begin

case win of

1: begin CopySer.X:=round(Main.Cx+(T.x*Main.Mash));

CopySer.Y:=round(Main.Cy-(T.y*Main.Mash)) end;

2: begin CopySer.X:=round(Main.Cx+(T.x*Main.Mash));

CopySer.Y:=round(Main.Cy-(T.z*Main.Mash)) end;

3: begin CopySer.X:=round(Main.Cx+(T.y*Main.Mash));

CopySer.Y:=round(Main.Cy-(T.z*Main.Mash)) end;

4: begin CopySer.X:=round(Main.Cx+(T.x*Main.Mash));

CopySer.Y:=round(Main.Cy-(T.y*Main.Mash)) end;

end;

Ser:=CopySer

end;

Function UnSer(win:byte; X,Y:integer;Tx,Ty,Tz:real; Main:TMainVar):Point;

var CopyUnSer:Point;

begin

case win of

1: begin CopyUnSer.x:=(X-Main.Cx)/Main.Mash;

CopyUnSer.y:=(Main.Cy-Y)/Main.Mash; CopyUnSer.z:=Tz end;

2: begin CopyUnSer.x:=(X-Main.Cx)/Main.Mash;

CopyUnSer.y:=Ty; CopyUnSer.z:=(Main.Cy-Y)/Main.Mash end;

3: begin CopyUnSer.x:=Tx; CopyUnSer.y:=(X-Main.Cx)/Main.Mash;

CopyUnSer.z:=(Main.Cy-Y)/Main.Mash end;

end;

UnSer:=CopyUnSer

end;

Procedure TForm1.DrawGrane;

Procedure GranBrush(Main:TMainVar; win:byte; i:integer; P:TPenStyle; var Can:TImage);

var j:integer;

w:array of TPoint;

begin

SetLength(w,E[i,0]);

for j:=1 to E[i,0] do

w[j-1]:=Ser(win,V[E[i,j]],Main);

if Scene[win].G[i].BrushGr and Scene[win].G[i].Paint then

begin

Can.Canvas.Pen.Style:=psSolid;

Can.Canvas.Pen.Color:=Scene[win].G[i].ColorGr;

Can.Canvas.Brush.Color:=Scene[win].G[i].ColorGr;

Can.Canvas.Polygon(w);

end;

if Scene[win].G[i].PenRb then

begin

Can.Canvas.Pen.Style:=P;

Can.Canvas.Pen.Color:=Scene[win].G[i].ColorRb;

Can.Canvas.Brush.Style:=bsClear;

Can.Canvas.MoveTo(w[0].X,w[0].Y);

for j:=1 to E[i,0]-1 do

Can.Canvas.LineTo(w[j].X,w[j].Y);

Can.Canvas.LineTo(w[0].X,w[0].Y);

end;

end;

//* Оси координат

Procedure LineOs(i:byte;var Can:TImage);

var j,k,a,b:integer;

begin

Can.Canvas.Pen.Color:=ColorNet;

a:=round(Can.Width/Scene[i].M.Mash) div 2;

b:=round(Can.Height/Scene[i].M.Mash) div 2;

for j:=-a to a do

begin

Can.Canvas.MoveTo(Scene[i].M.Cx+round(j*Scene[i].M.Mash),0);

Can.Canvas.LineTo(Scene[i].M.Cx+round(j*Scene[i].M.Mash),Can.Height);

end;

for j:=-b to b do

begin

Can.Canvas.MoveTo(0,Scene[i].M.Cy+round(j*Scene[i].M.Mash));

Can.Canvas.LineTo(Can.Width,Scene[i].M.Cy+round(j*Scene[i].M.Mash));

end;

Can.Canvas.Pen.Color:=clBlack;
1   2   3

Похожие:

Курсовая работа Тема: «Сечение многогранников» iconУрок по теме: «Правильные многогранники»
Цель урока: дать понятия правильного многогранника, полуправильных и звездчатых многогранников, рассмотреть свойства многогранников,...
Курсовая работа Тема: «Сечение многогранников» icon«Правильные многогранники»
Ввести определения правильного многогранника. Рассмотреть свойства правильных многогранников. Познакомить учащихся с историей возникновения...
Курсовая работа Тема: «Сечение многогранников» iconУрок «Золотое сечение». Тема: Золотое сечение
...
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа на тему : Формирование рынка ценных бумаг в Украине
Курсовая работа содержит 38 листов, 2 рисунка, 2 таблицы и было использовано 11 источников
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа
Курсовая работа оформляется в виде электронного файла и прикрепляется к своей странице в системе мониторинга нир. Распечатывать работу...
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа по дисциплине Электромагнитная совместимость систем...
Курсовая работа состоит из 20 с, в которых содержаться: 3 рисунка, 3 таблицы, 6 формул и 4 ссылки на литературу
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа по дисциплине «Предпринимательское право»
Курсовая работа имеет целью систематизацию, закрепление и расширение теоретических знаний, углубленное изучение и решение студентом...
Курсовая работа Тема: «Сечение многогранников» iconКурсовой работы. Составитель: доцент Корляков А. С. Екатеринбург...
Курсовая работа самостоятельная работа студента, выполняемая в соответствии с типовой программой учебного процесса по подготовке...
Курсовая работа Тема: «Сечение многогранников» iconРекомендации к оформлению курсовой и дипломной работы по истории искусства. Курсовая работа
Курсовая работа задание, которое выполняется студентами в определённый срок и по определённым требованиям. Защита курсовых работ...
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа является обязательным видом итогового контроля по...
Курсовая работа – это первый этап в самостоятельном теоретическом осмыслении материала, накопленного в ходе обучения в университете,...
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа на тему «Открытый урок»
Данная курсовая работа выполнена для того, чтобы учителя русского языка и литературы могли использовать разработанные мною уроки...
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа учебно-методическое пособие для студентов, обучающихся...
Курсовая работа: Учебно-методическое пособие / Автор составитель Е. М. Крупеня. М.: 30 с
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа учебно-методическое пособие для студентов, обучающихся...
Курсовая работа: Учебно-методическое пособие / Автор составитель Е. М. Крупеня. М.: 30 с
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа по информатике тема работы: Выбор тормоза механизма передвижения башенного крана

Курсовая работа Тема: «Сечение многогранников» iconМетодические указания к написанию курсовых работ курсовая работа
Курсовая работа является важнейшим элементом самостоятельной работы студентов. Основной целью курсовой работы является создание и...
Курсовая работа Тема: «Сечение многогранников» iconКурсовая работа Разработка проекта аис на примере муз «Городская больница»
Курсовая работа является одним из видов учебных занятий и выполняется в соответствии с учебным планом специальности. При написании...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск