Смекни!
smekni.com

Моделирование геометрического паркета из пятиугольников и шестиугольников (стр. 3 из 3)

Пятиугольник A2B2C2D2E2получаются из пятиугольникaABCDE с помощью центральной симметрии относительно середины отрезка АВ.

Тогда координаты вершин пятиугольникaA2B2C2D2E2:

Пятиугольник A3B3C3D3E3получаются из пятиугольникaABCDE с помощью:

1) симметрии относительно оси Ох;

2) поворот на уголtотносительно точки А; (получаемA3B3C3D3E3)

3) параллельный перенос на вектор D3B

Координаты вершин пятиугольникaA3B3C3D3E3:

Таким образом, для составления паркета из данного пятиугольника достаточно построить три пятиугольникa: ABCDE, A2B2C2D2E2 и A3B3C3D3E3.

Программа построения и примеры паркета из рассмотренного пятиугольника представлены в приложении 3 и в приложении 4 соответственно.

После наложения условий (7)-(10) получаем паркет из выпуклых пятиугольников. Если снять некоторые условия из условий (4), тогда могут возникнуть случаи, когда шестиугольник выраждается в пятиугольник или четырехугольник, а пятиугольник вараждается в четырехугольник.


Заключение

В книгах [1; 2] рассмотрены различные типы пятиугольников и шестиугольников, которыми можно замостить плоскость, но, к сожалению, в них нет математической теории для моделирования этих пятиугольников и шестиугольников. В настоящей работе была выполнена формализация поставленной задачи, впервые построены модели, разработаны программы для построения паркетов из некоторых типов пятиугольников и шестиугольников предложенных в книге [2], а так же был проведен эксперимент по тестированию разработанных программ. Для математического моделирования применялся метод координат и векторный метод. В работе впервые выведены условия выпуклости данных типов пятиугольника и шестиугольника. Все программы разработаны в среде Турбо Паскаль и позволяют наглядно моделировать различные паркеты.


Литература

1. Гарнер М. Путешествие во времени. – М.: Мир, 1990. – 341 с.

2. Математический цветник. /Сост. и ред. Д.А.Кларнер. М.: Мир, 1983. – 494 с.

3. Совертков П.И., Енбаева Е.А. Равносторонний пятиугольник Рейнхардта// Элементарная математика, математическое образование, геометрия и информатика №3, СПб.: Мифрил, 2000, с. 68-75.

4. Совертков П.И.,Слива М.В., Хохлов Д.Н. Геометрический паркет – I // Элементарная математика, математическое образование, геометрия и информатика № 4, СПб.: Мифрил, 2000, с. 3-19.



Приложение 1

Программа для построения паркета из шестиугольника.

Program shestiugolnik;

uses graph;

label 1,2;

var a,z4,s4,b,d,f,xx,yy,grv,grm,x0,x1,j,i,x5,y5,x2,x3,x4,y0,t, u,y1,y2,y3, y4, z1,z2,z3,s1,s2,s3:integer;tex:string; q,w,e:real;

begin

grv:=detect;

initgraph(grv,grm,'d:\bp\bgi');

1: writeln('gelaete vvesti parametri?(y/n)');

readln(tex);

if tex='n' then goto 2;

writeln('vvedite storoni');

readln(a,b,d,f);

xx:=-10;yy:=-10;t:=xx;u:=yy;

writeln('vvedite ugli');

readln(q,w,e);

q:=q*pi/180;w:=w*pi/180;e:=e*pi/180;

i:=trunc(sin(e)*(f*sin(q)-d*sin(e)));

j:=trunc(sin(e)*(b*sin(w)-d*sin(e)));

if (i<0)and(j<0) then begin

if (w<e)and(q>e)and(q>0)and(q<180)and(w>0)and(w<180)and(e>0)

and(e<180) then begin

for j:=1 to trunc(900/a) do begin

for i:=1 to trunc(600/(d*sin(e))) do begin

x0:=xx+0;y0:=yy+0;

x1:=xx+a;y1:=yy;

x2:=xx+trunc(A+B*COS(W));y2:=yy+trunc(B*SIN(W));

x4:=xx+trunc(D*COS(E));y4:=yy+trunc(D*SIN(E));

x3:=xx+trunc(A+D*COS(e));y3:=yy+trunc(d*sin(e));

x5:=trunc(f*cos(q))+xx;y5:=trunc(f*sin(q))+yy;

z1:=trunc(f*cos(q)-a)+xx;s1:=trunc(f*sin(q))+yy;

z2:=trunc(f*cos(q)-a-b*cos(w))+xx;s2:=trunc(f*sin(q)-b*sin(w))+yy;

z3:=trunc(f*cos(q)-a-d*cos(e))+xx;s3:=trunc(f*sin(q)-d*sin(e))+yy;

z4:=trunc(f*cos(q)-d*cos(e))+xx;s4:=trunc(f*sin(q)-d*sin(e))+yy;

xx:=xx+trunc(d*cos(e));yy:=yy+trunc(d*sin(e));

line(x0,y0,x1,y1);

line(x1,y1,x2,y2);

line(x2,y2,x3,y3);

line(x3,y3,x4,y4);

line(x4,y4,x5,y5);

line(x5,y5,x0,y0);

line(x5,y5,z1,s1);

line(z1,s1,z2,s2);

line(z2,s2,z3,s3);

line(z3,s3,z4,s4);

line(z4,s4,x0,y0);

end;

xx:=t+trunc(a+a-f*cos(q)+b*cos(w));t:=xx;

yy:=u+trunc(b*sin(w)-f*sin(q));u:=yy;

end;

end else begin writeln('vi vveli nevernie parametri');goto 1;end;

end else begin writeln('vi vveli nevernie parametri');goto 1;end;

readln;

2:

closegraph;

end.

Приложение 2

Пример 1.

Vvedite storoni

95 65 75 45

vvedite ugli

120 25 75

Пример 2.

Vvedite storoni

50 25 38 20

vvedite ugli

110 29 65



Приложение 3

Программа для построения паркета из пятиугольника.

program dip2;

uses graph;

label 1,2;

var a,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,i,j,xx,yy,b,c,vv,xa, xb,xc, xd, xe,ya,mm,yb,yc,yd,ye,x,y,grv,grm:integer;aa,qq,dd,tt,m1:real; tex:string[1];

begin

initgraph(grv,grm,'d:&bsol;bp&bsol;bgi');

1: writeln('gelaete vvesti parametri?(y/n)');

readln(tex);

if tex='n' then goto 2;

writeln('vvedite');readln(aa,dd,a,b,c);

aa:=aa*pi/180;dd:=dd*pi/180; tt:=aa+dd-pi; qq:=dd-pi;

vv:=trunc(a*sin(aa+dd)-b*sin(dd));

m1:=(a*sin(aa+dd)-b*sin(aa))*(a*sin(aa)-a*sin(dd)-b*sin(-dd+aa));

mm:= trunc(m1);

a1:=trunc(b*cos(aa)); a2:=trunc(b*sin(aa)); a3:=trunc(a*cos(tt));

a4:=trunc(a*sin(tt)); a5:=trunc(c*cos(qq)); a6:=trunc(c*sin(qq));

a7:=trunc(b*cos(dd));

a8:=trunc(b*sin(dd)); a9:=trunc(c*cos(aa));

a10:=trunc(c*sin(aa)); a11:=trunc(c*cos(aa));

a12:=trunc(c*sin(aa));

if (mm<0)and(a>0)and(b>0)and(c>0)and(aa>0)and(aa<180) and(dd>0) and(dd<180) then begin

if (vv<0)and(a2+a4+a6>0) then begin

x:=-300;y:=0;xx:=x;yy:=y;

for j:=1 to 20 do begin

xx:=xx+a+a3+a5+a11; yy:=yy-a4-a6-a12;

for i:=1 to 10 do begin

xe:=x; ye:=y;

xa:=x+a; ya:=y;

xd:=x+a1; yd:=y-a2;

xc:=x+a1+a3; yc:=y-a2-a4;

xb:=x+a1+a3+a5; yb:=y-a2-a4-a6;

line(xa,ya,xb,yb);line(xb,yb,xc,yc);line(xc,yc,xd,yd);line(xd,yd,xe,ye);

line(xe,ye,xa,ya);

xe:=x+a+a1+a3+a5; ye:=y-a2-a4-a6;

xa:=x+a1+a3+a5; ya:=y-a2-a4-a6;

xd:=x+a+a3+a5; yd:=y-a4-a6;

xc:=x+a+a5; yc:=y-a6;

xb:=x+a; yb:=y;

line(xa,ya,xb,yb);line(xb,yb,xc,yc);line(xc,yc,xd,yd);line(xd,yd,xe,ye);

line(xe,ye,xa,ya);

xe:=x+a1+a3+a5+a7; ye:=y-a2-a4-a6-a8;

xa:=x+a1+2*a3+a5+a7; ya:=y-a2-2*a4-a6-a8;

xd:=x+a1+a3+a5; yd:=y-a2-a4-a6;

xc:=x+a+a1+a3+a5; yc:=y-a2-a4-a6;

xb:=x+a+a1+a3+a5+a9; yb:=y-a2-a4-a6-a10;

line(xa,ya,xb,yb);line(xb,yb,xc,yc);line(xc,yc,xd,yd);line(xd,yd,xe,ye);

line(xe,ye,xa,ya);

xd:=x+a; yd:=y;

xc:=x; yc:=y;

xe:=x+a-a7; ye:=y+a8;

xa:=x+a-a3-a7; ya:=y+a4+a8;

xb:=x-a11; yb:=y+a12;

line(xa,ya,xb,yb);line(xb,yb,xc,yc);line(xc,yc,xd,yd);line(xd,yd,xe,ye);

line(xe,ye,xa,ya);

x:=x+a-a1-a3-a7; y:=y+a2+a4+a8;

xe:=x; ye:=y;

xa:=x+a; ya:=y;

xd:=x+a1; yd:=y-a2;

xc:=x+a1+a3; yc:=y-a2-a4;

xb:=x+a1+a3+a5; yb:=y-a2-a4-a6;

line(xa,ya,xb,yb);line(xb,yb,xc,yc);line(xc,yc,xd,yd);line(xd,yd,xe,ye);

line(xe,ye,xa,ya);

xe:=x+a+a1+a3+a5; ye:=y-a2-a4-a6;

xa:=x+a1+a3+a5; ya:=y-a2-a4-a6;

xd:=x+a+a3+a5; yd:=y-a4-a6;

xc:=x+a+a5; yc:=y-a6;

xb:=x+a; yb:=y;

line(xa,ya,xb,yb);line(xb,yb,xc,yc);line(xc,yc,xd,yd);line(xd,yd,xe,ye);

line(xe,ye,xa,ya);

xe:=x+a1+a3+a5+a7; ye:=y-a2-a4-a6-a8;

xa:=x+a1+2*a3+a5+a7; ya:=y-a2-2*a4-a6-a8;

xd:=x+a1+a3+a5; yd:=y-a2-a4-a6;

xc:=x+a+a1+a3+a5; yc:=y-a2-a4-a6;

xb:=x+a+a1+a3+a5+a9; yb:=y-a2-a4-a6-a10;

line(xa,ya,xb,yb);line(xb,yb,xc,yc);line(xc,yc,xd,yd);line(xd,yd,xe,ye);

line(xe,ye,xa,ya);

end;

x:=xx; y:=yy;

end;

end else begin writeln('oshibka 1');goto 1;end;

end else begin writeln('oshibka 2');goto 1;end;

readln;

2:

closegraph;end.


Приложение 4

Пример 1.

vvedite

75 120 75 45 25

Пример 2.

vvedite

85 150 75 85 95