Курсовая работа: Моделирование геометрического паркета из пятиугольников и шестиугольников
Название: Моделирование геометрического паркета из пятиугольников и шестиугольников Раздел: Рефераты по математике Тип: курсовая работа | |||||||||||||||||||||||||||||||||||||||
СУРГУТСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ ИНСТИТУТ МОДЕЛИРОВАНИЕ ГЕОМЕТРИЧЕСКОГО ПАРКЕТА ИЗ ПЯТИУГОЛЬНИКОВ И ШЕСТИУГОЛЬНИКОВ Секция 2.1: физико-математические науки (математика, физика, механика) Автор: Шрот Людмила Александровна Руководитель: Совертков Петр Игнатьевич 2004 Оглавление Введение § 1. Моделирование паркета из шестиугольников § 2. Моделирование паркета из пятиугольников Заключение Литература Приложения Введение Геометрическим паркетом или замощением плоскости, называется покрытие плоскости без пропусков и без перекрытий заданными фигурами. Один из наиболее важных вопросов теории разбиения плоскости можно сформулировать так: "Какой формы должна быть плитка, чтобы ее копиями можно было заполнить плоскость сплошь без пробелов и двойных покрытий?" Наиболее общий ответ на данный вопрос неизвестен. Частные ответы зависят от условий, налагаемых на форму плиток. Не трудно проверить, что любым треугольником или любым четырехугольником [4] можно вымостить плоскость, в то время как выпуклый многоугольник с пятью или большим числом сторон не всегда позволяет выложить плоскость без пробелов и наложений. Например, невозможно выложить плоскость правильными пятиугольниками, хотя некоторыми пятиугольниками с двумя параллельными сторонами, пятиугольниками с равными сторонами [3] можно вымостить плоскость. В книге «Математический цветник» [2] рассмотрены различные типы пятиугольников и шестиугольников, которыми можно замостить плоскость, но, к сожалению, в ней нет математической теории для моделирования этих пятиугольников и шестиугольников. Таким образом, актуальной задачей является формализация задачи, построение модели и разработка программы для построения паркетов из данных многоугольников. Цель работы – разработать новые модели геометрического паркета. Задачи: 1) выполнить моделирование для новых фундаментальных областей в зависимости от заданных параметров; 2) составить алгоритм построения новых паркетов; 3) разработать программу для построения паркета; § 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 параметров. Введем координатную плоскость таким образом, чтобы начало координат совпадало с точкой О,
а сторону ОА
совместим с осью 1) длины сторон: a = OA , b = AB , d = OD = CA , f = OE ,
Тогда координаты вершин шестиугольникaABCDEO :
Координаты вершин шестиугольник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) 2) 3)
В классификации М. Гарднера [3, c.184], [1 , c. 196] и Марджори Райс [3, c.189] этому пятиугольнику присвоен тип № 2. Условия (2) и (3) не являются независимыми. Вычисляя сумму углов пятиугольника по формуле 1) длины сторон: a = AE , b = ED , c = CB , 2) углы:
Для декартовой системы координат, изображенной на рисунке 2, получаем координаты вершин и векторов:
Для задания вектора Для углов в точке D с учетом их ориентации имеем
Для задания вектора Для углов в точке С имеем
На вводимые параметры наложим естественные условия:
Но при построении пятиугольника с этими условиями могут возникнуть следующие конфигурации, приводящие к невыпуклым пятиугольникам: а) После последовательного построения отрезков ЕА, ED , DC для пятиугольника точки Е и С оказались расположенными по одну стороны относительно прямой AD (рис. 2, рис. 3), но в выпуклом многоугольнике точки Е и С должны располагаться по разные стороны относительно диагонали AD .
Две точки
Составим уравнение прямой AD
Неравенство (5) для точек После упрощения получаем неравенство
Итак, если после введения параметров выполняется неравенство (7), то программа должна предусмотреть возврат на уточнение параметров, чтобы избежать конфигурации, рассмотренной в случае а). Рассмотрим второй способ нахождения аналитической характеристики случая а). Найдем величины Функция Если для введенных параметров выполняется условие
то следует повторить ввод параметров для пятиугольника. б) При построении отрезка СВ снова может возникнуть конфигурация, приводящая к невыпуклому пятиугольнику.
Составим уравнение прямой АВ
Неравенство (4) для точек
Если для введенных параметров выполняется условие (9), то следует повторить ввод параметров для пятиугольника. с) При построении отрезка СВ снова может возникнуть конфигурация, приводящая к невыпуклому пятиугольнику.
Чтобы избежать данной конфигурации необходимо потребовать, чтобы ордината точки В была меньше ординаты точки Е , то есть чтобы выполнялось следующее неравенство:
Если для введенных параметров выполняется условие (10), то следует повторить ввод параметров для пятиугольника. Координаты всех вершин пятиугольника определены, и пятиугольник можно построить на экране компьютера. По условию:
Рассмотрим математическую модель для составления программы изображения паркета на экране компьютера. Координаты вершин пятиугольникaABCDE : Пятиугольник A 2 B 2 C 2 D 2 E 2 получаются из пятиугольникaABCDE с помощью центральной симметрии относительно середины отрезка АВ . Тогда координаты вершин пятиугольникaA 2 B 2 C 2 D 2 E 2 : Пятиугольник A 3 B 3 C 3 D 3 E 3 получаются из пятиугольникaABCDE с помощью: 1) симметрии относительно оси Ох ; 2) поворот на уголt относительно точки А ; (получаемA ’3 B ’3 C ’3 D ’3 E ’3 )
Координаты вершин пятиугольникaA 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], а так же был проведен эксперимент по тестированию разработанных программ. Для математического моделирования применялся метод координат и векторный метод. В работе впервые выведены условия выпуклости данных типов пятиугольника и шестиугольника. Все программы разработаны в среде Турбо Паскаль и позволяют наглядно моделировать различные паркеты. Литература 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 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));
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;
2: closegraph;
Приложение 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));
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
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;
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;
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;
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);
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);
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 |