Pythagoraan kolmikot tasossa GeoGebralla + ongelma

Edellisessä artikkelissani piirsin Pythagoraan kolmikoita 3D-piirtoalueelle. Tällä kertaa sijoitetaan Pythagoraan kolmikoiden kateetit a ja b GeoGebran Piirtoalueelle. Tästä saa myös mukavan algebrallisen ongelmatehtävän. Tarinan lopussa luon Voronoi diagrammin ja Delaunay kolmioinnin kateettipisteistölle (a, b).

Pythagoraan kolmikoilla  tarkoitetaan lukukolmikoita (a, b, c), jotka on muodostettu seuraavalla tavalla. Olkoot m ja n positiivisia kokonaislukuja, joille m > n. Tällöin luvut a = m2 – n2, b = 2mn ja c = m2 + n2 muodostavat Pythagoraan kolmikon. Pythagoraan kolmikot ovat sellaisia luonnollisia lukuja, joilla pätee Pythagoraan lause a2 + b2 = c2.

Unohdetaan tällä kertaa hypotenuusat c ja tutkitaan vain kateettien a ja b paikkaa koordinaatistossa eli luodaan xy-tasoon pisteistö (a, b).

Luodaan ensin liuku p, joka saa arvoja (1, 2, … 100). Kirjoitetaan syöttökenttään 

p = 50

Klikataan Algebraikkunassa p:n kohdalla pikku pompulaa, jolloin syntyy liuku nimeltä p ja klikataan hiiren oikealla painikkeella p:tä Algebraikkunassa. Muutetaan liukusäätimen asetukset oheisen kuvan mukaisesti.

Luodaan Piirtoalueelle pisteistö näppäilemällä syöttökenttään

pyt=Jono(Jono(Jos(m > n, (m^2 - n^2, 2*m n)), n, 1, p, 1), m, 1, p, 1)

Englanniksi

pyt=Sequence(Sequence(If(m > n, (m^2 - n^2, 2*m n)), n, 1, p, 1), m, 1, p, 1)

Kun tuota pisteistöä katsoo, niin näyttää siltä, että pisteet asettuvat käyrille.

Ongelma

Millaiset lausekkeet/funktiot kuvaavat pisteistön ”käyriä”? Kuvassa vihreitä ja punaisia käyriä.

Voronoi diagrammi ja Delaunay kolmiointi

Lainaan Antti Seppälän gradusta hyvän suomenkielisen määritelmän Voronoi diagrammista

Oletetaan että on olemassa joukko pisteitä ja valitaan tästä joukosta satunnaisesti jokin piste. Rajataan sen jälkeen valitun pisteen ympäriltä tietty alue siten, että rajatun alueen jokainen kohta on lähempänä valittua pistettä kuin mitään toista joukon pistettä. Jos näin rajattu alue on suurin mahdollinen tällainen alue sitä kutsutaan Voronoivyöhykkeeksi (Voronoi region) tai Voronoi-soluksi (Voronoi cell). Esitystä, joka kuvaa pistejoukon kaikkien pisteiden Voronoi-solut kutsutaan Voronoi-diagrammiksi.

Pisteistöä pitää siivota, koska pyt-listassa on paljon määrittelemättömiä jäseniä ja turhia sisäkkäisiä sulkeita. Jos niistä halutaan eroon, niin näppäillään

py = PoistaMäärittelemätön(Tiivistä(pyt))

Englanniksi

py = RemoveUndefined(Flatten(pyt))

Voronoi-solut saadaan näkyville komennolla 

vo = Voronoi(py)

 Delaunay kolmioinnin määrittelyssä lainaan taas Antti Seppälän gradua.

Jos tarkastellaan pistejoukon Voronoi-diagrammia ja piirretään viiva niiden pisteiden välille, joiden Voronoi-solut koskettavat toisiaan, niin saadaan lopputuloksena kolmiointi. Tällainen kolmiointi tunnetaan nimellä Delaunay-kolmiointi.

GeoGebrassa Delaunay kolmiointi saadaan komennolla

de = DelaunayKolmiot(py)

Englanniksi

de = DelaunayTriangulation(py)

Lukijaa saattaa kiinnostaa Delaunay kolmioinnin tosielämän sovellukset. Lähteissä on linkki Robert Piché:n artikkeliin ”Matkapuhelinverkon solujen geometria” Solmu-lehdessä ja Santeri Hienosen insinöörityöhön ”2D-kenttäeditorin kehittäminen Unitypelimoottorille”.

Lähteet

Voronoi diagrammi Wikipediassa
https://fi.wikipedia.org/wiki/Voronoin_diagrammi

Antti Seppälän gradu Pintoja kuvaavien verkkojen muodostaminen ja optimointi
https://trepo.tuni.fi/bitstream/handle/10024/89295/Seppala_Antti.pdf?sequence=1

Delaunay triangulation Wikipediassa
https://en.wikipedia.org/wiki/Delaunay_triangulation

Professori Robert Piché ”Matkapuhelinverkon solujen geometria” Solmu-lehdessä
https://matematiikkalehtisolmu.fi/2003/1/voronoi.pdf

Santeri Hienosen insinöörityö ”2D-kenttäeditorin kehittäminen Unitypelimoottorille”, Metropolia ammattikorkeakoulu
https://www.theseus.fi/bitstream/handle/10024/137008/Hienonen_Santeri.pdf;jsessionid=23B4C9AFA43489F4C03C13094CF5E8AD?sequence=1

2 Replies to “Pythagoraan kolmikot tasossa GeoGebralla + ongelma”

Jätä kommentti

This site uses Akismet to reduce spam. Learn how your comment data is processed.