Программирование математических объектов

Сущность и основы программирования с использованием трёхмерной графики. Построение объемных фигур с последующей их демонстрацией на экране монитора. Обучение работе с программным продуктом. Нереализованные возможности программы и ее основные компоненты.

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

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

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

SS^[CS+2,1].x:=o.x-Party/2;SS^[CS+2,1].y:=o.y+Party/2;SS^[CS+2,1].z:=o.z+Party/2;

SS^[CS+2,2].x:=o.x-Party/2;SS^[CS+2,2].y:=o.y-Party/2;SS^[CS+2,2].z:=o.z-Party/2;

SS^[CS+2,3]:=SS^[CS+1,1];

o.x:=o.x-cx+dF;

o.y:=cy-o.y-dF;

o.z:=o.z-cx-dF;

Scene^.Camera[CC]^.Obj[CO]^.Done;

Scene^.Camera[CC]^.Done;

Scene^.Done;

New(Cube,Create(0,0,100,o.x,o.y,o.z,Party,T,Mode,0));

Scene^.Camera[CC]^.ADD(CO,CO+1);

For i:=1 to Scene^.Camera[CC]^.Obj[CO]^.Count do

begin

For j:=1 to 3 do

S[i,j]:=Scene^.Camera[CC]^.Obj[CO]^.Side[i]^.S[j];

if(i mod 2<>0)Then

T:=ColorText(RGB(100+Random(155),100+Random(155),100+Random(155)),GMT)

else T:=T;

Scene^.Camera[CC]^.Obj[CO]^.Side[i]^.Texture:=T;

Scene^.Camera[CC]^.Obj[CO]^.Side[i]^.Mode:=Mode;

end;

For i:=CS to CS+12 do

ClicCub[i]:=True;

CS:=CS+12;

N:=0;

Scene^.Camera[CC]^.Obj[CO]^.Done;

Scene^.Camera[CC]^.Done;

Scene^.Done;

ShowSide;

Flip(Lab.Vid);

end;

end;

procedure Data;

var i,j:Word;

begin

New(S);

New(SS);

GetMaxX:=Lab.Vid.Width-1;

GetMaxY:=Lab.Vid.Height-1;

M:=0;N:=0;Rot:=YRot;Bol:=False;

GMX:=Lab.Vid.Width;

GMY:=Lab.Vid.Height;

CSc:=1;CC:=1;CL:=1;CO:=1;CS:=1;

cx:=GMX div 2;

cy:=GMY div 2+1;

Blue:=RGB(255,0,0);

Red:=RGB(200,200,200);

Yelow:=RGB(0,255,0);

New(Scene,Create);

New(Scene^.Camera[CC],Create(0,0,0,0,0,0));

New(Light[CL],Create(-100,-100,0));

New(Scene^.Camera[CC]^.Obj[CO],Create(0,0,0,0,0,0));

Accept:=True;View:=False;

end;

procedure TLab.FormCreate(Sender: TObject);

var i,j:Word;

begin

Tables;

@InPut[1]:=@InPut1;

@InPut[2]:=@InPut2;

New(t);

For i:=0 to GMT do

New(t^[i]);

For i:=0 to GMT do

For j:=0 to GMT do

t^[i]^[j]:=RGB(255,0,0);

Data;

end;

procedure TLab.TimerTimer(Sender: TObject; LagCount: Integer);

var i:Word;

begin

if(Keys[VK_Escape])Then halt;

if(Bol=False)and(Keys[VK_F9])and(CountSide>0)Then begin

if(CountSide=0)Then begin

ShowMessage('Для просмотра нужна хотя бы одна грань');

exit;

end;

Bol:=True;View:=True;

Scene^.Camera[CC]^.Obj[CO]^.Done;

Scene^.Camera[CC]^.Done;

Scene^.Done;

CreateTMP(Scene^.Camera[CC]^.Obj[CO]);

For i:=1 to Scene^.Camera[CC]^.Obj[CO]^.Count do

Scene^.Camera[CC]^.Obj[CO]^.Side[i]^.o:=tmp_o;

Vid.Surface.Fill(0);

Scene^.Camera[CC]^.Obj[CO]^.Draw;

Flip(Vid);

end

else if(Bol)Then

if(Keys[ord('Y')])Then

begin

Rot:=YRot;

Vid.Surface.Fill(0);

Scene^.Camera[CC]^.Obj[CO]^.Rotate(CosA,SinA,Angle,Rot);

Scene^.Camera[CC]^.Obj[CO]^.Draw;

Flip(Vid);

end

else if(Keys[Ord('X')])Then

begin

Rot:=XRot;

Vid.Surface.Fill(0);

Scene^.Camera[CC]^.Obj[CO]^.Rotate(CosA,SinA,Angle,Rot);

Scene^.Camera[CC]^.Obj[CO]^.Draw;

Flip(Vid);

end

else if(Keys[Ord('Z')])Then

begin

Rot:=ZRot;

Vid.Surface.Fill(0);

Scene^.Camera[CC]^.Obj[CO]^.Rotate(CosA,SinA,Angle,Rot);

Scene^.Camera[CC]^.Obj[CO]^.Draw;

Flip(Vid);

end

else if(Keys[VK_Space])Then

begin

if(Space.Visible=False)Then begin

Space.Visible:=True;

Enter.Visible:=True;

BSide.Visible:=True;

BCube.Visible:=True;

Menu.Items[0].Visible:=True;

Menu.Items[1].Visible:=True;

Menu.Items[2].Visible:=True;

Width:=455;

Height:=465;

Left:=108;

Top:=-7;

Vid.Width:=385;

Vid.Height:=385;

Vid.Top:=32;

Vid.Left:=32;

GMX:=Lab.Vid.Width;

GMY:=Lab.Vid.Height;

GetMaxX:=GMX-1;

GetMaxY:=GMY-1;

end;

M:=0;N:=0;Bol:=False;

View:=False;

ShowSide;

Flip(Vid);

end;

end;

procedure TLab.VidMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var E:Boolean;

begin

E:=False;

if(View=False)Then InPut[Figure](x,y,E);

if(E=True)Then exit;

end;

procedure TLab.EnterClick(Sender: TObject);

var i:Word;

begin

if(CountSide=0)Then begin

ShowMessage('Для просмотра нужна хотя бы одна грань');

exit;

end;

Bol:=True;View:=True;

Scene^.Camera[CC]^.Obj[CO]^.Done;

Scene^.Camera[CC]^.Done;

Scene^.Done;

CreateTMP(Scene^.Camera[CC]^.Obj[CO]);

For i:=1 to Scene^.Camera[CC]^.Obj[CO]^.Count do

Scene^.Camera[CC]^.Obj[CO]^.Side[i]^.o:=tmp_o;

Vid.Surface.Fill(0);

Scene^.Camera[CC]^.Obj[CO]^.Draw;

Flip(Vid);

end;

procedure TLab.N3Click(Sender: TObject);

var i,j:integer;Name:String;

begin

OpenDialog.Execute;

Name:=OpenDialog.FileName;

Lab.Vid.Surface.Fill(0);

Data;

myform(GetMaxX,GetMaxY);

Flip(Lab.Vid);

if(Name='')Then exit;

LoadObject(Name,Scene^.Camera[CC]^.Obj[CO]);

LoadSide(Scene^.Camera[CC]^.Obj[CO]);

end;

procedure TLab.N4Click(Sender: TObject);

var Name:String;

begin

SaveDialog.Execute;

Name:=SaveDialog.FileName;

if(Name='')Then exit;

CreateTMP(Scene^.Camera[CC]^.Obj[CO]);

SaveObject(Name,Scene^.Camera[CC]^.Obj[CO]);

end;

procedure TLab.N2Click(Sender: TObject);

begin

Flip(Lab.Vid);

if(Lab.Width>Lab.Height)Then Lab.Height:=Lab.Width

else Lab.Width:=Lab.Height;

Vid.Height:=Lab.Height-81;

Vid.Width:=Lab.Width-81;

Lab.Vid.Surface.Fill(0);

Data;

myform(GetMaxX,GetMaxY);

Flip(Lab.Vid);

end;

procedure TLab.N9Click(Sender: TObject);

begin

ShowMessage('Autocad version 1.2 Copiright by Anton Sazonov');

end;

procedure TLab.N10Click(Sender: TObject);

begin

Halt;

end;

procedure TLab.SpaceClick(Sender: TObject);

var i:Word;

begin

M:=0;N:=0;Bol:=False;

View:=False;

ShowSide;

Flip(Vid);

end;

procedure TLab.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

Keys[Key]:=True;

end;

procedure TLab.FormKeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

Keys[Key]:=False;

end;

procedure TLab.CancelClick(Sender: TObject);

begin

Halt;

end;

procedure TLab.OKClick(Sender: TObject);

begin

Option[1]:=Box1.Text;

if(Option[1]='')Then begin

ShowMessage('Выберите режим!');

Exit;

end

else if(Option[1]='4 bits')Then PixMode:=1

else if(Option[1]='8 bits')Then PixMode:=2

else if(Option[1]='16 bits')Then PixMode:=3

else if(Option[1]='24 bits')Then PixMode:=4

else if(Option[1]='32 bits')Then PixMode:=5;

Option[2]:=Box6.Text;

if(Option[2]='')Then begin

ShowMessage('Выберите разрешение!');

Exit;

end

else if(Option[2]='640X480')Then begin

ScreenX:=640;ScreenY:=480;

end

else if(Option[2]='800X600')Then begin

ScreenX:=800;ScreenY:=600;

end

else if(Option[2]='1024X768')Then begin

ScreenX:=1024;ScreenY:=768;

end

else if(Option[2]='1280X1024')Then begin

ScreenX:=1280;ScreenY:=1024;

end;

Surf:=Vid.Surface;

SetGraphMode(PixMode);

Label1.Destroy;

Label6.Destroy;

Label7.Destroy;

Box1.Destroy;

Box6.Destroy;

Cancel.Destroy;

OK.Visible:=False;

Lab.Height:=465;

Lab.Top:=-7;

Menu.Items.Visible:=True;

Vid.Visible:=True;

Vid.Width:=385;

Vid.Height:=385;

Space.Visible:=True;

Enter.Visible:=True;

Lab.Vid.Surface.Fill(0);

myform(GetMaxX,GetMaxY);

Flip(Lab.Vid);

if(Lab.Width>Lab.Height)Then Lab.Height:=Lab.Width

else Lab.Width:=Lab.Height;

Vid.Height:=Lab.Height-81;

Vid.Width:=Lab.Width-81;

Lab.Vid.Surface.Fill(0);

Data;

myform(GetMaxX,GetMaxY);

Flip(Lab.Vid);

BCube.Visible:=True;

BSide.Visible:=True;

Menu.Items[0].Visible:=True;

Menu.Items[1].Visible:=True;

Menu.Items[2].Visible:=True;

OK.Destroy;

end;

procedure TLab.N8Click(Sender: TObject);

begin

Application.HelpContext(10);

end;

procedure TLab.BCubeClick(Sender: TObject);

begin

Figure:=2;

ClicCub[CS]:=True;

end;

procedure TLab.BSideClick(Sender: TObject);

begin

Figure:=1;

end;

procedure TLab.N6Click(Sender: TObject);

begin

if (View=True)Then begin

Space.Visible:=False;

Enter.Visible:=False;

BSide.Visible:=False;

BCube.Visible:=False;

Menu.Items[0].Visible:=False;

Menu.Items[1].Visible:=False;

Menu.Items[2].Visible:=False;

Width:=ScreenX+10;

Height:=ScreenY+20;

Left:=-10;

Top:=-30;

Vid.Width:=ScreenX+1;

Vid.Height:=ScreenY-16;

Vid.Top:=0;

Vid.Left:=0;

GMX:=ScreenX;GMY:=ScreenY;

GetMaxX:=GMX-1;GetMaxY:=GMY-1;

Scene^.Camera[CC]^.Obj[CO]^.Draw;

Flip(Vid);

end;

end;

end.

ЗАКЛЮЧЕНИЕ

Программирование с использованием трёхмерной графики - это способ описания языком программирования объёмных тел и отображения их на дисплее.

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

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

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

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

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

Трёхмерная графика необходима везде, где производятся материальные объекты, где есть инженеры, конструкторы, архитекторы, просто квалифицированные рабочие, а именно: в самолётостроении, в машиностроении, в судостроении, в строительстве, в космической промышленности и т. д.

С трёхмерной графикой, так или иначе, приходится сталкиваться дизайнерам одежды, дизайнерам интернет-сайтов, любым другим дизайнерам, работникам отделов рекламы, продюсерам и т. д.

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

Если дать оценку трёхмерной графики в материальном производстве, то она будет следующей: трёхмерная графика, как способ изображения объёмных фигур или тел, является самым наглядным методом представления информации, используемой в материальном производстве. Без трёхмерной графики не было бы налажено любое материальное производство. Самый удобный способ задания и использования трёхмерной или объёмной графики осуществляется с помощью информационных технологий, а именно компьютера.

СПИСОК ЛИТЕРАТУРЫ

1 С. Бобровский «Delphi 5». 2007

2 О.Е. Акимов «Дискретная математика, логика, группы, графы».

3 М.П. Богдан «Конспект лекций» 2006

4 Фаронов В. В. «Turbo Pascal 7.0» 2005

5 В. Кулаков «Программирование на аппаратном уровне»

6 А.В. Потапкин, Д. Ф., Кучвальский «3D Studio Max» 2006


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

  • Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.

    курсовая работа [333,5 K], добавлен 21.01.2013

  • Представление графических данных. Растровая, векторная и фрактальная виды компьютерной графики. Цвет и цветовые модели: метод кодирования цветовой информации для ее воспроизведения на экране монитора. Основные программы для обработки растровой графики.

    реферат [429,7 K], добавлен 01.08.2010

  • Векторная компьютерная графика. Графические примитивы. Графические возможности языка программирования Pascal. Методические рекомендации к изучению графики в языке программирования Pascal. Построение графиков функций.

    курсовая работа [28,3 K], добавлен 13.06.2007

  • Сущность программирования с использованием среды Delphi 7 и ее основные графические возможности. Структура автономно компилируемого программного модуля и его принципы. Основные приемы работы с графическими процедурами, построение дуги, круга и эллипса.

    курсовая работа [138,2 K], добавлен 16.12.2011

  • Изучение базовых понятий объектно-ориентированного программирования. Исследование принципов работы с классами и объектами. Построение системы классов для описания плоских геометрических фигур. Анализ методов создания объектов, перемещения на плоскости.

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

  • Рассмотрение особенностей среды программирования Delphi. Разработка программы для пересчета длины из фунтов в килограммы с использованием следующих объектов: Edit, Label, Button. Значения свойств поля ввода-редактирования и командной кнопки Перерасчет.

    практическая работа [177,2 K], добавлен 18.10.2012

  • Разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Класс программы, инструкция по использованию программы.

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

  • Основы создания фрактальных композиций при помощи среды программирования Паскаль. Сущность и основа фрактальной графики. Графические возможности и операторы для рисования геометрических фигур в среде Паскаль. Примеры обозначения цветов на языке Паскаль.

    лабораторная работа [15,7 K], добавлен 12.06.2010

  • Использование объектно-ориентированной методологии при программировании математических процессов. Среда языка программирования Delphi для решения математических задач. Объектно-ориентированные, декларативные и императивные языки программирования.

    дипломная работа [1,8 M], добавлен 14.09.2011

  • Сравнительная характеристика, возможности и функции языков программирования JavaScript и PHP. Основные области их использования. Разработка интерактивного Web-приложения с применением JavaScript на примере теста по теме "Программирование на языке Delphi".

    курсовая работа [19,3 K], добавлен 01.07.2014

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