m_n[j,i]:=0;
end;
end;
{сортировка верхних вершин}
for j:= 1 to 7 do
begin
for i:= 1 to 5 do
begin
if (m_v[i+1, 2]<m_v[i, 2]) then
begin
y:= m_v[i+1, 1];
x:= m_v[i+1, 2];
m_v[i+1, 1]:=m_v[i, 1];
m_v[i+1, 2]:=m_v[i, 2];
m_v[i, 1]:= y;
m_v[i, 2]:= x;
end;
end;
end;
{сортировка нижних вершин}
for j:= 1 to 7 do
begin
for i:= 1 to 5 do
begin
if m_n[i+1, 2]>m_n[i, 2] then
begin
y:= m_n[i+1, 1];
x:= m_n[i+1, 2];
m_n[i+1, 1]:=m_n[i, 1];
m_n[i+1, 2]:=m_n[i, 2];
m_n[i, 1]:= y;
m_n[i, 2]:= x;
end;
end;
end;
bl_versh:=abs(sr_x-x6)+abs(sr_y-y6);//находим ближайшую к центру вершину
for i:=1 to 6 do
begin
if ((bl_versh) >= (abs(sr_x-m_y[i,2])+abs(sr_y-m_y[i,1]))) then
begin
x:=m_y[i,2];
y:=m_y[i,1];
bl_versh:=abs(sr_x-m_y[i,2])+abs(sr_y-m_y[i,1]);
end;
end;
{все вершины шестиугольника в один массив}
for j:=1 to 2 do
begin
for i:=1 to 6 do
begin
if (m_v[i,j]<>0)and (m_v[i+6,j+6]<>0) then m_y[i,j]:=m_v[i,j]
else m_y[i,j]:=m_n[i,j]
end;
end;
for i:=1 to 6 do
begin
if ((m_y[i,1]=y) and (m_y[i,2]=x)) then
osnver:=i;
end;
If OsnVer=1 then
begin
TDraw_PLT.Put_Texture(m_y[1,2],m_y[1,1],m_y[2,2],m_y[2,1],m_y[3,2],m_y[3,1]);
TDraw_PLT.Put_Texture(m_y[1,2],m_y[1,1],m_y[3,2],m_y[3,1],m_y[4,2],m_y[4,1]);
TDraw_PLT.Put_Texture(m_y[1,2],m_y[1,1],m_y[4,2],m_y[4,1],m_y[5,2],m_y[5,1]);
TDraw_PLT.Put_Texture(m_y[1,2],m_y[1,1],m_y[6,2],m_y[6,1],m_y[5,2],m_y[5,1]);
end;
If OsnVer=2 then
begin
TDraw_PLT.Put_Texture(m_y[2,2],m_y[2,1],m_y[3,2],m_y[3,1],m_y[4,2],m_y[4,1]);
TDraw_PLT.Put_Texture(m_y[2,2],m_y[2,1],m_y[4,2],m_y[4,1],m_y[5,2],m_y[5,1]);
TDraw_PLT.Put_Texture(m_y[2,2],m_y[2,1],m_y[5,2],m_y[5,1],m_y[6,2],m_y[6,1]);
TDraw_PLT.Put_Texture(m_y[2,2],m_y[2,1],m_y[1,2],m_y[1,1],m_y[6,2],m_y[6,1]);
end;
If OsnVer=3 then
begin
TDraw_PLT.Put_Texture(m_y[3,2],m_y[3,1],m_y[4,2],m_y[4,1],m_y[5,2],m_y[5,1]);
TDraw_PLT.Put_Texture(m_y[3,2],m_y[3,1],m_y[5,2],m_y[5,1],m_y[6,2],m_y[6,1]);
TDraw_PLT.Put_Texture(m_y[3,2],m_y[3,1],m_y[6,2],m_y[6,1],m_y[1,2],m_y[1,1]);
TDraw_PLT.Put_Texture(m_y[3,2],m_y[3,1],m_y[2,2],m_y[2,1],m_y[1,2],m_y[1,1]);
end;
If OsnVer=4 then
begin
TDraw_PLT.Put_Texture(m_y[4,2],m_y[4,1],m_y[5,2],m_y[5,1],m_y[6,2],m_y[6,1]);
TDraw_PLT.Put_Texture(m_y[4,2],m_y[4,1],m_y[6,2],m_y[6,1],m_y[1,2],m_y[1,1]);
TDraw_PLT.Put_Texture(m_y[4,2],m_y[4,1],m_y[1,2],m_y[1,1],m_y[2,2],m_y[2,1]);
TDraw_PLT.Put_Texture(m_y[4,2],m_y[4,1],m_y[3,2],m_y[3,1],m_y[2,2],m_y[2,1]);
end;
If OsnVer=5 then
begin
TDraw_PLT.Put_Texture(m_y[5,2],m_y[5,1],m_y[6,2],m_y[6,1],m_y[1,2],m_y[1,1]);
TDraw_PLT.Put_Texture(m_y[5,2],m_y[5,1],m_y[1,2],m_y[1,1],m_y[2,2],m_y[2,1]);
TDraw_PLT.Put_Texture(m_y[5,2],m_y[5,1],m_y[2,2],m_y[2,1],m_y[3,2],m_y[3,1]);
TDraw_PLT.Put_Texture(m_y[5,2],m_y[5,1],m_y[4,2],m_y[4,1],m_y[3,2],m_y[3,1]);
end;
If OsnVer=6 then
begin
TDraw_PLT.Put_Texture(m_y[6,2],m_y[6,1],m_y[1,2],m_y[1,1],m_y[2,2],m_y[2,1]);
TDraw_PLT.Put_Texture(m_y[6,2],m_y[6,1],m_y[2,2],m_y[2,1],m_y[3,2],m_y[3,1]);
TDraw_PLT.Put_Texture(m_y[6,2],m_y[6,1],m_y[3,2],m_y[3,1],m_y[4,2],m_y[4,1]);
TDraw_PLT.Put_Texture(m_y[6,2],m_y[6,1],m_y[5,2],m_y[5,1],m_y[4,2],m_y[4,1]);
end;
end;
procedure TDraw_PLT.Draw_luchi(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6: integer);
var
m_y: array [1..6, 1..2] of integer;
Cort: array [1..6] of integer;
i,k, min,max, j, y, x: integer;
bl_versh, sr_y,sr_x:real;
begin
OsnVer:=0;
{Деление шестиугольника пополам по у}
cort[1]:=y1;
cort[2]:=y2;
cort[3]:=y3;
cort[4]:=y4;
cort[5]:=y5;
cort[6]:=y6;
min:=y1;
max:=y1;
for k:=1 to 6 do
begin
if cort[k]<min then min:=cort[k];
if cort[k]>max then max:=cort[k];
end;
sr_y:=(min+max)/ 2;
{Деление шестиугольника пополам по х}
cort[1]:=x1;
cort[2]:=x2;
cort[3]:=x3;
cort[4]:=x4;
cort[5]:=x5;
cort[6]:=x6;
min:=x1;
max:=x1;
for k:=1 to 6 do
begin
if cort[k]<min then min:=cort[k];
if cort[k]>max then max:=cort[k];
end;
sr_x:=(min+max)/ 2;
{сортировка вершин шестиугольника}
m_y[1, 1]:=y1;
m_y[2, 1]:=y2;
m_y[3, 1]:=y3;
m_y[4, 1]:=y4;
m_y[5, 1]:=y5;
m_y[6, 1]:=y6;
m_y[1, 2]:=x1;
m_y[2, 2]:=x2;
m_y[3, 2]:=x3;
m_y[4, 2]:=x4;
m_y[5, 2]:=x5;
m_y[6, 2]:=x6;
bl_versh:=abs(sr_x-x6)+abs(sr_y-y6);//находим ближайшую к центру вершину
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.