Моделирование геометрического паркета из пятиугольников и шестиугольников
СУРГУТСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ ИНСТИТУТ
МОДЕЛИРОВАНИЕ ГЕОМЕТРИЧЕСКОГО ПАРКЕТА ИЗ ПЯТИУГОЛЬНИКОВ И ШЕСТИУГОЛЬНИКОВ
Секция 2.1: физико-математические науки (математика, физика, механика)
Автор: Шрот Людмила Александровна
Руководитель: Совертков Петр Игнатьевич
2004
Оглавление
Введение
§ 1. Моделирование паркета из шестиугольников
§ 2. Моделирование паркета из пятиугольников
Заключение
Литература
Приложения
Введение
Геометрическим паркетом или замощением плоскости, называется покрытие плоскости без пропусков и без перекрытий заданными фигурами.
Один из наиболее важных вопросов теории разбиения плоскости можно сформулировать так: "Какой формы должна быть плитка, чтобы ее копиями можно было заполнить плоскость сплошь без пробелов и двойных покрытий?" Наиболее общий ответ на данный вопрос неизвестен. Частные ответы зависят от условий, налагаемых на форму плиток. Не трудно проверить, что любым треугольником или любым четырехугольником [4] можно вымостить плоскость, в то время как выпуклый многоугольник с пятью или большим числом сторон не всегда позволяет выложить плоскость без пробелов и наложений. Например, невозможно выложить плоскость правильными пятиугольниками, хотя некоторыми пятиугольниками с двумя параллельными сторонами, пятиугольниками с равными сторонами [3] можно вымостить плоскость.
В книге «Математический цветник» [2] рассмотрены различные типы пятиугольников и шестиугольников, которыми можно замостить плоскость, но, к сожалению, в ней нет математической теории для моделирования этих пятиугольников и шестиугольников. Таким образом, актуальной задачей является формализация задачи, построение модели и разработка программы для построения паркетов из данных многоугольников.
Цель работы – разработать новые модели геометрического паркета.
Задачи:
выполнить моделирование для новых фундаментальных областей в зависимости от заданных параметров;
составить алгоритм построения новых паркетов;
разработать программу для построения паркета;
§ 1. Моделирование паркета из шестиугольников
Из - угольников одного типа, где , можно построить паркет при некоторых условиях на стороны и углы. Если окрестность точки замостить тремя многоугольниками без повторения его углов в этой вершине, то сумма углов должна быть равна полному углу, т.е. . При совмещении многоугольников сторонами получаем условие о равенстве некоторых сторон.
К. Рейнхардт (1918 г.), Р.Б. Кершнер (1968 г.), М. Гарднер (1975 г.), Р. Джеймс (1975 г.), Марджори Райс (1976 г.) [2, c. 183], получили ряд условий на пятиугольники и шестиугольники, из которых можно построить геометрический паркет.
В первом разделе впервые выполнено моделирование и составлены алгоритмы построения геометрических паркетов из неправильных шестиугольников одного типа. Изменяя параметры, можно получить различные паркеты.
Задача. Написать математическую модель для составления программы изображения паркета на экране компьютера, используя шестиугольник, изображенный на рис.1 .
Как было замечено выше, из - угольников одного типа, где , можно построить паркет при некоторых условиях на стороны и углы. Для рассматриваемого шестиугольника определим следующие условия:
Легко проверить, что , поэтому этими углами можно замостить окрестность точки.
Для составления программы изображения паркета из данного шестиугольника на экране компьютера, достаточно рассмотреть два шестиугольникa: ABCDEO и A’B’C’D’E’O’ (рис.2). Шестиугольник A’B’C’D’E’O’ получается из шестиугольника ABCDEO с помощью центральной симметрии относительно середины отрезка ОЕ.
Рассмотрим математическую модель для составления программы изображения паркета на экране компьютера.
Определимся с количеством параметров. Чтобы задать - угольник на плоскости, достаточно задать его вершины в прямоугольной декартовой системе координат, т.е. указать координат.
Таким образом, для задания шестиугольника необходимо 12 параметров.
Введем координатную плоскость таким образом, чтобы начало координат совпадало с точкой О, а сторону ОА совместим с осью , тогда координаты точки О и ордината точки А известны и, следовательно, количество необходимых параметров становится равным , т.е. остается 9 параметров. С учетом параллельности и равенства сторон ОА и DC, необходимыми остаются 7 параметров. Это (рис. 3):
1) длины сторон: a=OA, b=AB, d=OD=CA, f=OE,
2) углы: .
Тогда координаты вершин шестиугольникa ABCDEO :
;; ; ;
; .
Координаты вершин шестиугольникa :
;;
;
;
; .
Все необходимые координаты определены, и паркет из рассматриваемого шестиугольника можно построить на экране компьютера.
На вводимые параметры наложим естественные условия:
Но при построении шестиугольника с этими условиями могут возникнуть следующие конфигурации, приводящие к невыпуклым шестиугольникам:
а) После последовательного построения отрезков OA,OE, ED и DC точки D и С окажутся расположенными по разные стороны от прямой OE, то есть возникнет один из случаев изображенных на рис. 4 или на рис. 5:
Но в выпуклом шестиугольнике точки D и С должны располагаться по одну сторону относительно прямой OE. Таким образом, на вводимые параметры необходимо наложить дополнительное условие:
б) При построении шестиугольника точки Е и О могут оказаться расположенными по разные стороны от прямой DC, но в выпуклом шестиугольнике точки Е и О должны располагаться по одну сторону относительно прямой DС иначе возникнет следующий случай невыпуклого шестиугольника:
Данный случай возникнет, если ЕН>1>>DН>2> .
Следовательно, на вводимые параметры необходимо наложить еще одно условие:
Рассуждая аналогичным образом для точек В и О, получаем еще одно дополнительное условие:
Итак, если после введения параметров одно из условий (1), (2), (3) или (4) не выполняется, то программа должна предусмотреть возврат на уточнение параметров, чтобы избежать конфигураций, рассмотренных в случаях а) и б).
Программа построения и примеры паркета из рассмотренного шестиугольника представлены в приложении 1 и в приложении 2 соответственно.
§ 2. Моделирование паркета из пятиугольников
Задача. Написать математическую модель для составления программы изображения паркета на экране компьютера, используя шестиугольник, изображенный на рис. 1.
Для пятиугольника, изображенного на рис. 1, выполняются следующие условия:
1), (1)
2), (2)
3). (3)
В классификации М. Гарднера [3, c.184], [1 , c. 196] и Марджори Райс [3, c.189] этому пятиугольнику присвоен тип № 2.
Условия (2) и (3) не являются независимыми. Вычисляя сумму углов пятиугольника по формуле , получаем 5400, поэтому достаточно потребовать выполнение одного из условий (2), (3), тогда второе выполняется автоматически. Итак, уменьшая число параметров для пятиугольника на 2 на основании равенств (1), (3), получаем пять параметров для задания пятиугольника. Это (рис. 2.)
1) длины сторон: a=AE, b=ED, c=CB,
2) углы: .
Для декартовой системы координат, изображенной на рисунке 2, получаем координаты вершин и векторов:
.
Для задания вектора введем вспомогательный угол , образованный этим вектором с положительным направлением оси Ох
Для углов в точке D с учетом их ориентации имеем
или
Для задания вектора введем вспомогательный угол, образованный этим вектором с положительным направлением оси .
Для углов в точке С имеем
,
.
,
На вводимые параметры наложим естественные условия:
(4)
Но при построении пятиугольника с этими условиями могут возникнуть следующие конфигурации, приводящие к невыпуклым пятиугольникам:
а) После последовательного построения отрезков ЕА, ED, DC для пятиугольника точки Е и С оказались расположенными по одну стороны относительно прямой AD (рис. 2, рис. 3), но в выпуклом многоугольнике точки Е и С должны располагаться по разные стороны относительно диагонали AD.
Две точки расположены по одну сторону относительно прямой, заданной уравнением , тогда и только тогда, когда выполняется условие
. (5)
Составим уравнение прямой AD
.
(6)
Неравенство (5) для точек и прямой (6) принимает вид
После упрощения получаем неравенство
(7)
Итак, если после введения параметров выполняется неравенство (7), то программа должна предусмотреть возврат на уточнение параметров, чтобы избежать конфигурации, рассмотренной в случае а).
Рассмотрим второй способ нахождения аналитической характеристики случая а).
Найдем величины ,
Функция на отрезке является монотонно убывающей функцией, поэтому из условия следует условие и наоборот.
Если для введенных параметров выполняется условие
, (8)
то следует повторить ввод параметров для пятиугольника.
б) При построении отрезка СВ снова может возникнуть конфигурация, приводящая к невыпуклому пятиугольнику.
Составим уравнение прямой АВ
.
Неравенство (4) для точек и прямой АС после упрощений принимает вид
(9)
Если для введенных параметров выполняется условие (9), то следует повторить ввод параметров для пятиугольника.
с) При построении отрезка СВ снова может возникнуть конфигурация, приводящая к невыпуклому пятиугольнику.
B
Чтобы избежать данной конфигурации необходимо потребовать, чтобы ордината точки В была меньше ординаты точки Е, то есть чтобы выполнялось следующее неравенство:
(10)
Если для введенных параметров выполняется условие (10), то следует повторить ввод параметров для пятиугольника.
Координаты всех вершин пятиугольника определены, и пятиугольник можно построить на экране компьютера.
По условию: , следовательно, этими углами можно замостить окрестность точки.
Таким образом, для составления программы изображения паркета из данного пятиугольника на экране компьютера, достаточно рассмотреть три пятиугольникa: ABCDE, A>2>B>2>C>2>D>2>E>2 >и A>3>B>3>C>3>D>3>E>3 >(рис. 6).
Рис.6
Е>2>
А>2>
С>2>
В>2>
D>2>
Е>3>
А>3>
С>3>
В>3>
D>3>
Рассмотрим математическую модель для составления программы изображения паркета на экране компьютера.
Координаты вершин пятиугольникa ABCDE :
Пятиугольник A>2>B>2>C>2>D>2>E>2> получаются из пятиугольникa ABCDE с помощью центральной симметрии относительно середины отрезка АВ.
Тогда координаты вершин пятиугольникa A>2>B>2>C>2>D>2>E>2>:
Пятиугольник A>3>B>3>C>3>D>3>E>3> получаются из пятиугольникa ABCDE с помощью:
симметрии относительно оси Ох;
2) поворот на угол t относительно точки А; (получаем A’>3>B’>3>C’>3>D’>3>E’>3>)
3) параллельный перенос на вектор D’>3> B
Координаты вершин пятиугольникa A>3>B>3>C>3>D>3>E>3>:
Таким образом, для составления паркета из данного пятиугольника достаточно построить три пятиугольникa: ABCDE, A>2>B>2>C>2>D>2>E>2 >и A>3>B>3>C>3>D>3>E>3>.
Программа построения и примеры паркета из рассмотренного пятиугольника представлены в приложении 3 и в приложении 4 соответственно.
После наложения условий (7)-(10) получаем паркет из выпуклых пятиугольников. Если снять некоторые условия из условий (4), тогда могут возникнуть случаи, когда шестиугольник выраждается в пятиугольник или четырехугольник, а пятиугольник вараждается в четырехугольник.
Заключение
В книгах [1; 2] рассмотрены различные типы пятиугольников и шестиугольников, которыми можно замостить плоскость, но, к сожалению, в них нет математической теории для моделирования этих пятиугольников и шестиугольников. В настоящей работе была выполнена формализация поставленной задачи, впервые построены модели, разработаны программы для построения паркетов из некоторых типов пятиугольников и шестиугольников предложенных в книге [2], а так же был проведен эксперимент по тестированию разработанных программ. Для математического моделирования применялся метод координат и векторный метод. В работе впервые выведены условия выпуклости данных типов пятиугольника и шестиугольника. Все программы разработаны в среде Турбо Паскаль и позволяют наглядно моделировать различные паркеты.
Литература
Гарнер М. Путешествие во времени. – М.: Мир, 1990. – 341 с.
Математический цветник. /Сост. и ред. Д.А.Кларнер. М.: Мир, 1983. – 494 с.
Совертков П.И., Енбаева Е.А. Равносторонний пятиугольник Рейнхардта// Элементарная математика, математическое образование, геометрия и информатика №3, СПб.: Мифрил, 2000, с. 68-75.
Совертков П.И.,Слива М.В., Хохлов Д.Н. Геометрический паркет – 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:\bp\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