Platonska kroppar med Matlab

Relevanta dokument
Några geometriska konstruktioner i R 3

Geometriska transformationer

Transformationer i R 2 och R 3

Inledning. CTH/GU LABORATION 4 MVE /2017 Matematiska vetenskaper

Homogena koordinater och datorgrafik

Linjära ekvationssystem

Mer om geometriska transformationer

Eulers polyederformel och de platonska kropparna

Föreläsning 5: Geometri

Om plana och planära grafer

CTH/GU LABORATION 1 MVE /2013 Matematiska vetenskaper. Mer om grafritning

4-10 Rymdgeometri fördjupning Namn:..

PLANA FIGURER I DEN TREDIMENSIONELLA RYMDEN

Arbetsblad 2:1. 1 a) Figuren ska vikas till en kub. Vilken av kuberna blir det? 2 Vilka av figurerna kan du vika till en kub?

Om plana och planära grafer

System av ordinära differentialekvationer

RIKSSEMIFINAL! 2015! TÄVLANDE!

RIKSSEMIFINAL! 2015! DOMARE!

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 2 november 2015 Sida 1 / 23

Mer om funktioner och grafik i Matlab

Räknare får inte användas i den här delen. Skriv ner beräkningar eller motiveringar till varje uppgift, ifall ingenting annat uppges.

Att man bara kan konstruera fem platonska kroppar hänger samman med vinkelsumman som bildas då sidorna möts i kroppens hörn.

Grafritning och Matriser

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

Funktioner och grafritning i Matlab

Programmeringsuppgift Game of Life

TSBB14 Laboration: Intro till Matlab 1D

Dubbelintegraler. 1 Inledning. 2 Rektangelregeln. CTH/GU LABORATION 5 MVE /2018 Matematiska vetenskaper

M=matte - Handledning

Funktionsytor och nivåkurvor

Funktionsytor och nivåkurvor

Kurvor, fält och ytor

Parametriserade kurvor

Minsta-kvadratmetoden

Steg 1 Klipp ut de figurer du behöver! Steg 2 Bygg din rymdraket! Matematikuppgift 1

Mer om funktioner och grafik i Matlab

Linjära system av differentialekvationer

Gruppledtrådar 6-2A (i samband med sidorna 50-60) Ledtråd 2 Den har 4 begränsningsytor (B). Ledtråd 1 Polyedern är regelbunden.

M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1

Modeller och teknik Grundl program och gränssnitt. Matlab-tips

TANA17 Matematiska beräkningar med Matlab

Innehåll. Om Euklides Sidan 2. Om Biblioteket Sidan 2. Om Verkstaden Sidan 3. Övningar Sidan 9. Ett tema En gatas geometri Sidan 34.

MATLAB. Introduktion. Syfte. Tips. Oktober 2009

Laboration 3: Stora talens lag, centrala gränsvärdessatsen och enkla punktskattningar

Grafritning kurvor och ytor

En glimt av Mr Mxyzptlks värld

Kort om programmering i Matlab

Symboliska beräkningar i Matlab

Grafritning kurvor och ytor

Linjära system av differentialekvationer

Area och volym hos Euklides och Hilberts tredje problem

PRELIMINÄRPROV Kort matematik

Golv, Tapeter, och andra Mönster

KPP053, HT2016 MATLAB, Föreläsning 3. Plotter och diagram Läsa och skriva data till fil

Avdelning 1, trepoängsproblem

Polygoner. Trianglar på tre sätt

Känguru 2011 Cadet (Åk 8 och 9)

Linjära ekvationssystem i Matlab

ATT RITA GRAFER MED KOMMANDOT "PLOT"

Extramaterial till Matematik Y

Newtons metod. 1 Inledning. CTH/GU LABORATION 3 MVE /2014 Matematiska vetenskaper

Syftet med den här laborationen är att du skall bli mer förtrogen med följande viktiga områden inom matematisk statistik

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

Matlabövning 1 Funktioner och grafer i Matlab

Datorövning 1 Fördelningar

Enklare matematiska uppgifter

Känguru Student (gymnasiet åk 2 och 3) sida 1 / 6

TANA17 Matematiska beräkningar med Matlab

Facit åk 6 Prima Formula

Laboration 2 Ordinära differentialekvationer

Robotarm och algebra

Matematik med Matlab för I Inledning. 1 Programmering i MATLAB

Vad är geometri? För dig? I förskolan?

1 Vektorer i koordinatsystem

7F Ma Planering v2-7: Geometri

Datorövning 1: Fördelningar

FORMER, MÖNSTER OCH TESSELERINGAR

Introduktion till Matlab

Introduktion till Matlab

Matlabövning 1 Funktioner och grafer i Matlab

8F Ma Planering v2-7 - Geometri

Elevens övningsark Förnamn

TAIU07 Matematiska beräkningar med Matlab

Lösningsförslag till problem 1

Övningens syfte: Att förstå hur positiva och negativa magnetiska poler har bortstötande krafter och tilldragande krafter

TMV166 Linjär algebra för M. Datorlaboration 2: Matrisalgebra och en mekanisk tillämpning

Studio 6: Dubbelintegral.

Vektorgeometri för gymnasister

9E Ma Planering v2-7 - Geometri

Newtons metod. 1 Inledning. 2 Newtons metod. CTH/GU LABORATION 6 MVE /2013 Matematiska vetenskaper

Undersökande arbetssätt i matematik 1 och 2

NMAB09 MATEMATIKENS HISTORIA

linjära ekvationssystem.

Extramaterial till Matematik Y

REPETITION 2 A. a) Är sträckan proportionell mot tiden? b) Beräkna medelhastigheten under de fem första sekunderna.

Laboration: Grunderna i MATLAB

Enklare matematiska uppgifter

Banach-Tarskis paradox

Konvexa höljet Laboration 6 GruDat, DD1344

Matlab övningsuppgifter

Transkript:

CTH/GU LABORATION 1 MVE400-2014/2015 Matematiska vetenskaper Platonska kroppar med Matlab Inledning Platonska kroppar är tre-dimensionella konvexa polyedrar som har likformiga polygoner som sidor. Lika många sidor möts i varje hörn och alla hörn är lika. Redan Euklides visade att det finns precis fem sådana kroppar. Vi ritar upp dem i ordningen ikosaeder, oktaeder, tetraeder, hexaeder (kub) och dodekaeder. I sammanhanget kan vi nämna Arkimediska kroppar. Dessa har lika hörn men sidorna kan vara olika polygoner. Det finns tretton sådana. Vi börjar med att rita en liksidig tetraeder med hörnpunkter på enhetssfären och hörnpunkternas koordinater som ( 2 ) ( ) 2 2 2 3, 0, 1, 3 3, ± 3, 1, (0, 0, 1) 3 Först lagra vi koordinaterna som kolonner i en matris H enligt a=2*sqrt(2)/3; b=-sqrt(2)/3; c=sqrt(2/3); d=-1/3; H=[ a b b 0 0 c -c 0 d d d 1 ]; därefter tar vi och skriver ut de olika hörnens nummer på respektive plats i rummet, notera att size(h,2) ger antal kolonner i H, dvs. antal hörnpunkter. figure(1), clf axis equal, axis([-1 1-1 1-1 1]), axis vis3d, axis off hold on for i=1:size(h,2) text(h(1,i),h(2,i),h(3,i),num2str(i)) Skriv in detta i Matlab så blir det begripligt. Vi kan vända och vrida så vi ser var hörnen är placerade. Nu skall vi bilda en matris S som skall hålla ordning på vilka hörnpunkter som är hörn på de olika sidorna i tetraedern. 1

På rad 1 i S, dvs. S(1,:), lagrar vi numren på hörnen på sidan 1, osv. S=[ 1 2 3 1 2 4 1 3 4 2 3 4 ]; Nu kan vi rita upp sidorna med fill3, notera att size(s,1) är antal rader i S, dvs. antal sidor på tetraedern for i=1:size(s,1) Si=S(i,:); fill3(h(1,si),h(2,si),h(3,si), b, facealpha,0.2) Det är förståndigt att bygga upp S rad för rad, och använda koden ovan för att rita fler och fler av tetraederns sidor. På så sätt ser vi vilka sidor vi inte redan har beskrivit. Så här ser tetraedern ut när vi är färdiga (vi har lagt på belysning också). På samma sätt kunna göra en matris K som håller reda på alla kanter på tetraedern. Dvs. numret på hörnen som är start- och slutpunkter för linjen som bildar en kant. K=[ 1 2 1 3 2 3 1 4 2 4 3 4 ]; Så här kan vi rita upp kanterna for i=1:size(k,1) Ki=K(i,:); plot3(h(1,ki),h(2,ki),h(3,ki), k, linewidth,2) När vi nu kommit fram till hur H och S skall se ut kan vi samla ihop koden för att rita tetraedern och så lägger vi på lite belysning och sånt a=2*sqrt(2)/3; b=-sqrt(2)/3; c=sqrt(2/3); d=-1/3; H=[ a b b 0 0 c -c 0 d d d 1 ]; S=[ 1 2 3 1 2 4 1 3 4 2 3 4 ]; 2

figure(2), clf col=[0.4 0.5 1]; % RGB-trippel som ger en mild blå färg. hold on for i=1:size(s,1) Si=S(i,:); fill3(h(1,si),h(2,si),h(3,si),col, facealpha,0.8) hold off axis equal, axis off, axis vis3d, view(-45,16) material shiny, camlight left, camlight head Uppgift 1 Nu är det dags för er att göra en ikosaeder. Den består av 20 liksidiga trianglar. Koordinaterna för hörnpunkterna kan vi ta som (0, ±1, ±ϕ), (±1, ±ϕ, 0), (±ϕ, 0, ±1) där ϕ = 1+ 5 2 (gyllene snittet). Om vi vill att hörnpunkterna skall ligga på enhetssfären skalar vi med faktorn s = 1 1+ϕ 2. Rita nu upp ikosaedern genom att använda samma teknik som för tetraedern. Vi får jobba lite mer, vi har 12 hörn (istället för 4) och vi har 20 sidor (istället för 4). Något liknande följande bild bör ni komma fram till. Stjärnformering Vi kan göra en stjärna av vår ikosaeder genom att ta ut mittpunkten på varje sida och rita tre små triangel-flak istället för ett (för varje sida). Vi skjuter ut mittpunkterna 3

eller drar in dem mot origo Koden för att rita sidorna ersätts med for i=1:size(s,1) Si=S(i,:); Mi=(H(:,Si(1))+H(:,Si(2))+H(:,Si(3)))/3; % Mittpunkten på sida nr i Mi=Mi*5; % Skalning, pröva olika faktorer. % Med 5 får du en långarmad stjärna. fill3([h(1,si(1:2)) Mi(1)],[H(2,Si(1:2)) Mi(2)],[H(3,Si(1:2)) Mi(3)],... col, facealpha,0.8) fill3([h(1,si(2:3)) Mi(1)],[H(2,Si(2:3)) Mi(2)],[H(3,Si(2:3)) Mi(3)],... col, facealpha,0.8) fill3([h(1,si([3,1])) Mi(1)],[H(2,Si([3,1])) Mi(2)],[H(3,Si([3,1])) Mi(3)],... col, facealpha,0.8) Dessa stjärnformiga polyedrar är inte Platonska kroppar (varför?). Modifiera nu er kod. Prova lite olika värden på skalfaktorn (även negativa värden är kul) och vänd och vrid. Uppgift 2 Vi skall rita ikosaedern med stänger och noder på följande sätt. Då behöver vi vår kantmatris K. För att rita klot eller noder använder vi funktionen klot och för att rita stavar eller stänger använder vi funktionen stav. Båda finns på på materialsidan. Kopiera från matrialsidan till aktuell katalog (där du arbetar med Matlab) och läs hjälptexterna med help klot respektive help stav. 4

Uppgift 3 Vi kommer i denna uppgift behöva s.k. cellmatriser. Dessa byggs upp med { }, dvs. måsvingeparanteser. Exempelvis A={{5 6 7};{3 4}} ger oss en cellmatris med två rader, den ena raden med tre element och den andra med bara två element. Med A{1} får vi första raden och med A{2}{3} får vi andra radens tredje element. Vill vi ha de numeriska värdena från t.ex. första raden ger vi cell2mat(a{1}). Vi vill kunna rita en polyeder som inte har likformiga sidor. Sidorna kommer då ha olika antal hörn, dvs. matrisen som håller reda på sidornas hörnnummer kommer ha olika långa rader. Det är här cellmatriserna kommer in. Som exempel skall vi rita en stympad tetraeder som uppstått då vi klippt av alla hörnen. Så här kan det se ut, tetraedern till vänster av den stympade till höger. Den senare kommer ha trianglar och hexagoner som sidor. Vi har sedan tidigare matrisen H med hörnpunkternas koordinater för tetraedern. Nu skall vi bilda de nya hörnpunkterna i den stympade tetraedern genom att placera dessa c = 1/3 in längs varje kant från ursprungliga hörnpunkterna. Så här får vi nya hörnpunkterna (12 stycken) c=1/3; P=zeros(3,12); P(:,1:3)= (1-c)*H(:,[1 1 1])+c*H(:,[2 3 4]); P(:,4:6)= (1-c)*H(:,[2 2 2])+c*H(:,[1 3 4]); P(:,7:9)= (1-c)*H(:,[3 3 3])+c*H(:,[1 2 4]); P(:,10:12)=(1-c)*H(:,[4 4 4])+c*H(:,[1 2 3]); Vi sätter ut nummer vid varje nytt hörn. for i=1:size(p,2) text(p(1,i),p(2,i),p(3,i),num2str(i), fontsize,14) Vi sätter ihop den cellmatris som skall hålla reda på vilka hörnpunkter som bygger upp sidorna och efter hand ritar vi upp sidorna. T={{10 11 12} {2 3 10 12 9 7} {1 3 10 11 6 4} {1 2 3} {4 5 6} {5 6 11 12 9 8} {7 8 9} {1 4 5 8 7 2}}; 5

Vi ritar sidorna med (här behöver vi cell2mat) for i=1:size(t,1) Ti=cell2mat(T{i}); fill3(p(1,ti),p(2,ti),p(3,ti), r, facealpha,0.8) Även en ny kantmatris behöver byggas upp. L=[1 2 2 3 1 3 1 4 3 10 2 7 4 5 5 6 4 6 5 8 6 11 7 8 8 9 7 9 9 12 10 11 11 12 10 12]; for i=1:size(l,1) Li=L(i,:); plot3(p(1,li),p(2,li),p(3,li), k, linewidth,2) Så här ser resultatet ut när vi är klara och har ritat med stavar och kulor. Detta är inte en Platonsk kropp, däremot är det en Arkimedisk kropp (4 trianglar, 4 hexagoner). Nu skall vi se hur vi ritade bilderna ovan. clf rstav=0.03; rnod=0.07; colstav=[0.1 0.1 0.2]; colnod=[0 1 0]; hold on for i=1:size(t,1) Ti=cell2mat(T{i}); fill3(p(1,ti),p(2,ti),p(3,ti),0.5*[1 1 1], facealpha,0.6) 6

for j=1:size(p,2) klot(p(:,j),rnod,50,colnod,1) for i=1:size(l,1) Li=L(i,:); stav(p(:,li(1)),p(:,li(2)),rstav,20,colstav,1) hold off axis equal off tight vis3d material metal camlight left, camlight head, camlight right rotate3d on Uppgiften består nu i att arbeta igenom exemplet med tetraedern och (i mån av tid) göra om samma sak med kuben, dvs. rita en stympad kub. Placera de nya hörnpunkterna i den stympade kuben c = 1/(2+ 2) in på varje kant, så att ni får ytterligare en Arkimedisk kropp (8 trianglar, 6 oktagoner). Ungefär så här kan det se ut när ni är klara. 7