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