Смекни!
smekni.com

Программирование математических объектов (стр. 6 из 6)

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 А.В. Потапкин, Д. Ф., Кучвальский «3DStudioMax» 2006