Úvod do výpočetní geometrie. Základní vztahy.

Podobné dokumenty
Geometrické vyhledávání

Algoritmizace prostorových úloh

Vzorce počítačové grafiky

Voronoiův diagram. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta

Topologická kostra. Medial Axis. Straight Skeleton.

Geometrické vyhledání.

Triangulace. Význam triangulace. trojúhelník je základní grafický element aproximace ploch předzpracování pro jiné algoritmy. příklad triangulace

ÚLOHY S POLYGONEM. Polygon řetězec úseček, poslední bod je totožný s prvním. 6 bodů: X1, Y1 až X6,Y6 Y1=X6, Y1=Y6 STANOVENÍ PLOCHY JEDNOHO POLYGONU

GIS Geografické informační systémy

INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA

GIS Geografické informační systémy

P L A N I M E T R I E

Triangulace. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování

1. Přímka a její části

Rovnice přímky. s = AB = B A. X A = t s tj. X = A + t s, kde t R. t je parametr. x = a 1 + ts 1 y = a 2 + ts 2 z = a 3 + ts 3. t R

Dvěma různými body prochází právě jedna přímka.

6. ANALYTICKÁ GEOMETRIE

Úvod do mobilní robotiky AIL028

Operace s uzavřenými oblastmi v GIS

Konvexní obálka množiny bodů.

Cyklografie. Cyklický průmět bodu

Dynamické datové struktury IV.

Dynamické datové struktury I.

Syntetická geometrie II

6.1 Vektorový prostor

Elementární plochy-základní pojmy

GIS Geografické informační systémy

2. Vyšetřete všechny možné případy vzájemné polohy tří různých přímek ležících v jedné rovině.

3 Geometrie ve škole. krychle a její obrázek, koule a její stín, průměty trojrozměrného útvaru do roviny

Detekce kartografického zobrazení z množiny

Počítačová geometrie I

Matematika 1 MA1. 1 Analytická geometrie v prostoru - základní pojmy. 4 Vzdálenosti. 12. přednáška ( ) Matematika 1 1 / 32

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

4. Digitální model terénu.

Kružnice, úhly příslušné k oblouku kružnice

2. přednáška z předmětu GIS1 Data a datové modely

1.1 Základní pojmy prostorové geometrie. Předmětem studia prostorové geometrie je prostor, jehož prvky jsou body. Další

5. P L A N I M E T R I E

Omezíme se jen na lomené čáry, jejichž nesousední strany nemají společný bod. Jestliže A 0 = A n (pro n 2), nazývá se lomená čára uzavřená.

Dynamické datové struktury III.

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

A[a 1 ; a 2 ; a 3 ] souřadnice bodu A v kartézské soustavě souřadnic O xyz

14. přednáška. Přímka

VE 2D A 3D. Radek Výrut. Abstrakt Tento článek obsahuje postupy pro výpočet Minkowského sumy dvou množin v rovině a pro výpočet Minkowského sumy

FAKULTA STAVEBNÍ VUT V BRNĚ PŘIJÍMACÍ ŘÍZENÍ PRO AKADEMICKÝ ROK

MATURITNÍ TÉMATA Z MATEMATIKY

Realita versus data GIS

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY DUBNA 2017

Rozvinutelné plochy. tvoří jednoparametrickou soustavu rovin a tedy obaluje rozvinutelnou plochu Φ. Necht jsou

Rastrová reprezentace

Gymnázium Jiřího Ortena, Kutná Hora. Průřezová témata Poznámky. Téma Školní výstupy Učivo (pojmy) volné rovnoběžné promítání průmětna

PLANIMETRIE 2 mnohoúhelníky, kružnice a kruh

Vybrané kapitoly z matematiky

3.2. ANALYTICKÁ GEOMETRIE ROVINY

Shodná zobrazení. bodu B ležet na na zobrazené množině b. Proto otočíme kružnici b kolem

Cvičení z Lineární algebry 1

1 Připomenutí vybraných pojmů

Geoinformatika. IX GIS modelování

ANALYTICKÁ GEOMETRIE V ROVINĚ

Vektorový prostor. Př.1. R 2 ; R 3 ; R n Dvě operace v R n : u + v = (u 1 + v 1,...u n + v n ), V (E 3 )...množina vektorů v E 3,

PROGRAMY PRO GIS. Formovat/formulovat problém pro aplikaci v počítači. Fungování GIS programů na základní úrovni - "uvažovat" jako počítač

6. Základy výpočetní geometrie

11. VEKTOROVÁ ALGEBRA A ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ. u. v = u v + u v. Umět ho aplikovat při

od zadaného bodu, vzdálenost. Bod je střed, je poloměr kružnice. Délka spojnice dvou bodů kružnice, která prochází středem

Výpočet průsečíků paprsku se scénou

KONSTRUKTIVNÍ GEOMETRIE

4. Statika základní pojmy a základy rovnováhy sil

Matematika I 12a Euklidovská geometrie

Zákony hromadění chyb.

KMA/GPM Barycentrické souřadnice a

TROJÚHELNÍK 180. Definice. C neleží v přímce. Potom trojúhelníkem ABC nazveme průnik polorovin ABC, BCA, Nechť body. Viz příloha: obecny_trojuhelnik

Základní topologické pojmy:

Circular Harmonics. Tomáš Zámečník

3. ÚVOD DO ANALYTICKÉ GEOMETRIE 3.1. ANALYTICKÁ GEOMETRIE PŘÍMKY

Analytická geometrie lineárních útvarů

Poznámka. V některých literaturách se pro označení vektoru také používá symbolu u.

X = A + tu. Obr x = a 1 + tu 1 y = a 2 + tu 2, t R, y = kx + q, k, q R (6.1)

11. VEKTOROVÁ ALGEBRA A ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ

Algoritmy pro ořezávání 2D polygonů

[obr. 1] Rozbor S 3 S 2 S 1. o 1. o 2 [obr. 2]

Konstruktivní geometrie - LI. Konstruktivní geometrie - LI () Kótované promítání 1 / 44

Algoritmy výpočetní geometrie

7. Geografické informační systémy.

Výpočetní geometrie Computational Geometry

GEODETICKÉ VÝPOČTY I.

6 Skalární součin. u v = (u 1 v 1 ) 2 +(u 2 v 2 ) 2 +(u 3 v 3 ) 2

( ) ( ) 6. Algebraické nerovnice s jednou neznámou ( ) ( ) ( ) ( 2. e) = ( )

3.1.2 Polorovina, úhel

Počítačová geometrie. + algoritmy DG

SHODNÁ ZOBRAZENÍ V ROVINĚ GEOMETRICKÁ ZOBRAZENÍ V ROVINĚ SHODNÁ ZOBRAZENÍ

Gymnázium Jiřího Ortena, Kutná Hora

ICT podporuje moderní způsoby výuky CZ.1.07/1.5.00/ Matematika planimetrie. Mgr. Tomáš Novotný

ZÁKLADNÍ PLANIMETRICKÉ POJMY

PLANIMETRIE úvodní pojmy

MATEMATIKA Maturitní témata společná část MZ základní úroveň (vychází z Katalogu požadavků MŠMT)

CVIČNÝ TEST 41. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17

Přijímací zkouška na MFF UK v Praze

Pracovní listy MONGEOVO PROMÍTÁNÍ

Eukleidovský prostor a KSS Eukleidovský prostor je bodový prostor, ve kterém je definována vzdálenost dvou bodů (metrika)

Transkript:

Úvod do výpočetní geometrie. Základní vztahy. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie. Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 1 / 51

Obsah přednášky 1 Úvod do výpočetní geometrie 2 Problémy řešené v digitální kartografii/gis 3 Základní vztahy a testy 4 Datové modely Špagetový model Doubly Connected Edge List omáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 2 / 51

1. Úvod Úvod do výpočetní geometrie Druhá polovina 20. stol, rozvoj informačních informačních technologií. Pronikání do řady vědních oborů včetně kartografie vznik digitální kartografie (Digital Cartography). Přechod od subjektivních postupů (umělecké, výtvarné, estetické) na exaktní (tj. objektivně měřitelná). 70. léta 20. stol: vznik výpočetní geometrie (Computational Geometry). Zabývá se problematikou algoritmů geometrické povahy souvisejících s pořizováním, ukládáním, editací, analýzou či vizualizací prostorových dat (vektorových i rastrových). Algoritmy poskytují výsledky řešení problémů, v této souvislosti vyvstává řada otázek: je nalezené řešení optimální či dále optimalizovatelné? v jakém čase a s jakými hardwarovými požadavky lze nalézt řešení problému pro vstupní množinu? jsou algoritmy citlivé na konfiguraci prvků vstupní množiny? Znalost odpovědí na tyto otázky umožní navrhnout co nejvýhodnější postup řešení zadaného problému. Vývoj nových algoritmů je stále aktuální, nové techniky měření (např. laserové skenování) a zpracování dat. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 3 / 51

Problémy řešené v digitální kartografii/gis 2. Nejčastější problémy řešené s využitím výpočetní geometrie Výpočetní geometrie: poskytuje nástroje a postupy pro řešení problémů ve 2D/3D s využitím algoritmů geometrické povahy. Nejčastěji řešené problémy: Konvexní obálky (2D/3D): hledání nejmenšího polygonu nad množinou zadaných bodů. Voronoi diagramy: rozdělení prostorou do podoblastí se stejnou vzdáleností od centra (bodové i plošné). Triangulace (2D/3D): tvorba sítě trojúhelníků/čtyřstěnů na oblasti dané konvexní obálkou či nekonvexní oblasti. Průniky a průsečíky: hledání průniků a průsečíků bodů, linií, polygonů či složitějších entit ve 3D. Geometrické vyhledávání: Nalezení bodu/bodů ležících uvnitř konvexních/nekonvexních mnohoúhelníků. Plánování pohybu: plánování optimální cesty robota v prostředí tvořeném překážkami. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 4 / 51

Problémy řešené v digitální kartografii/gis 3. Aplikace v digitální kartografii/gis Příklady použití: Optimalizace tvaru regionů, hledání nejbližšího správního centra: Voronoi diagram, zobecněný Voronoi diagram. Digitální modely terénu a jejich analýzy: Delaunay triangulace, datově závislé triangulace. Kartografická generalizace: skeletony, konvexní obálky, Voronoi diagram, vyhlazování. Operace v GIS: booleovské operace s oblastmi, offset oblasti, geometrické vyhledávání prvků. Samotná výpočetní geometrie nestačí, nutno kombinovat s robustním matematickým / statistickým aparátem. Příklady použití: Vektorizace, rasterizace dat: Voronoi diagramy, teorie grafů. Automatické rozpoznávání tvarů: Voronoi diagramy, skeletony, geostatistika, teorie grafů. Klasifikační algoritmy, řízená/neřízená klasifikace rastrových dat: geostatistika. Hledání dopravního spojení, logistické úlohy: teorie grafů. Komprese dat vektorových/rastrových: Diskrétní Fourierova transformace, Huffmanovo kódování, binární stromy. Tomáš Bayer Interpolace, bayertom@natur.cuni.cz extrapolace (Katedra Úvod dat: aplikované do výpočetní geostatistika. geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 5 / 51

Problémy řešené v digitální kartografii/gis 4. V kterém prvku leží kurzor (Geometrické vyhledávání) Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 6 / 51

Problémy řešené v digitální kartografii/gis 5. Optimalizace tvaru regionů vzhledem k centru (Voronoi diagram) Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 7 / 51

Problémy řešené v digitální kartografii/gis 6. Tvorba DMT (Delaunay triangulace) Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 8 / 51

Problémy řešené v digitální kartografii/gis 7. Kartografická generalizace (konvexní obálky, lineární regrese) Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 9 / 51

Problémy řešené v digitální kartografii/gis 8. Kartografická generalizace (topologická kostra) Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 10 / 51

Problémy řešené v digitální kartografii/gis 9. Kartografická generalizace (konvexní obálky, MBR) Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 11 / 51

Problémy řešené v digitální kartografii/gis 10. Množinové operace s oblastmi v GIS Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 12 / 51

Problémy řešené v digitální kartografii/gis 11. Offset polygonu (Minkowského suma) Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 13 / 51

Základní vztahy a testy 12. Mnohoúhelníky a jejich vlastnosti V1: Mnohoúhelník P je část roviny ohraničená uzavřenou lomenou čarou tvořenou konečným počtem n vrcholů p i. Nechť e i = p i p i+1 představuje stranu mnohoúhelníku. V2: Konvexní mnohoúhelník P je takový mnohoúhelník, jehož všechny vnitřní úhly ω i jsou konvexní. V3: V konvexním mnohoúhelníku P neleží žádný bod spojnice dvou libovolných vrcholů p i, p j, i j, vně P. V4: Přímka q, která není rovnoběžná se žádnou hranou konvexního mnohoúhelníku P, protíná P nejvýše ve dvou bodech. V5: Všechny úhlopříčky konvexního mnohoúhelníku P leží uvnitř P. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 14 / 51

Základní vztahy a testy 13. Mnohoúhelníky a jejich vlastnosti V6: Mnohoúhelník je monotónní vzhledem přímce q, právě když každá přímka t q protne P nejvýše dvakrát. V7: Konvexní mnohoúhelník je monotónní vzhledem k libovolné přímce q. V8: Monotónní mnohoúhelník může být triangularizován v lineárním čase. V9: Pokud je alespoň jeden z vnitřních úhlů ω i mnohoúhelníku P větší než π, mnohoúhelník je nekonvexní. V10: V nekonvexním mnohoúhelníku existuje alespoň jedna spojnice dvou vrcholů p i, p j, i j, jejíž body leží vně mnohoúhelníku. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 15 / 51

Základní vztahy a testy 14. Mnohoúhelníky a jejich vlastnosti V11: Jednoduchý mnohoúhelník (Simple Polygon) je takový mnohoúhelník, pro jehož strany platí: Průsečíkem páru sousedních hran e i, e i+1 je bod p i+1: e i e i+1 = p i+1. Hrany, které spolu nesousedí, nemají žádný průsečík: e i e j = pro všechny j i + 1. V12: Každý konvexní mnohoúhelník je jednoduchý. V13: Nejednoduchý mnohoúhelník (Not Simple Polygon): existuje průsečík hran q, které spolu nesousedí, tj. e i e j = q pro j i + 1. Topologicky nekorektní, nebude uvažován. V14: Lineárně separovatelné mnohoúhelníky P 1, P 2 jsou takové mnohoúhelníky, jejichž konvexní obálky H(P 1), H(P 2) se neprotínají. V15: Lineárně neseparovatelné mnohoúhelníky P 1, P 2 jsou takové mnohoúhelníky, jejichž konvexní obálky H(P 1), H(P 2) se protínají. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 16 / 51

Základní vztahy a testy 15. Ukázky mnohoúhelníků Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 17 / 51

Základní vztahy a testy 16. Mnohoúhelníky a jejich vlastnosti V16 (Jordanova věta): Každá jednoduchá uzavřená křivka může být rozdělena na dvě části (týká se i mnohoúhelníků). V17: Suma vnitřních úhlů mnohoúhelník s n vrcholy je (n 2)π. V18: Každý mnohoúhelník musí mít alespoň jeden striktně konvexní vrchol (tj. vrchol, jehož přiléhající hrany svírají úhel < π, nikoliv π). V19 (Meistersova věta): Každý mnohoúhelník s n 4 vrcholy má diagonálu. V20: Každý mnohoúhelník s n vrcholy může být přidáním úhlopříček dekomponován na množinu trojúhelníků. V21: Každá triangulace mnohoúhelníku s n vrcholy používá n 3 diagonál a n 2 trojúhelníků. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 18 / 51

Základní vztahy a testy 17. Vlastnosti mnohoúhelníků Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 19 / 51

18. Orientace vektorů Základní vztahy a testy Dáno: vektory u = (u x, u y ), v = (v x, v y ) Hledáme: Orientace vektorů u, v. Vektory u, v jsou orientovány pozitivně, pokud úhel ω (0, π). Vektory u, v jsou orientovány negativně, pokud úhel ω (π, 2π). Pokud t = u x v x u y v y { t < 0 t > 0 Test bývá nazýván HalfPlane testem. u, v negativně orientovány, u, v pozitivně orientovány. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 20 / 51

Základní vztahy a testy 19. Poloha bodu a přímky Dáno: Bod A = [x A, y A ], přímka p, p P 1, P 2, P 1 = [x 1, y 1], P 2 = [x 2, y 2]. Hledáme: Poloha A k p. Používán test orientace vektorů, leží bod A v levé či v pravé polorovině vzhledem k p? u = (x2 x 1, y 2 y 1) t = ux v x uy v y v = (xa x 1, y A y 1) = x 1 y 1 1 t < 0 A vlevo od p x 2 y 2 1 x 3 y 3 1 t = 0 A p t > 0 A vpravo od p = 2S (P 1, P 2, A) Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 21 / 51

Základní vztahy a testy 20. Rovnice přímky dané dvěma body Dáno: přímka p, p P 1, P 2, P 1 = [x 1, y 1 ], P 2 = [x 2, y 2 ]. Hledáme: rovnice p. Rovnice přímky dané dvěma body Vyjádření determinantem Obecná rovnice přímky kde y y 1 = x y 1 x 1 y 1 1 x 2 y 2 1 y2 y1 x 2 x 1 (x x 1). = 0. ax + by + cz = 0, a = y 1 y 2 b = x 2 x 1 c = x 1y 2 y 1x 2 Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 22 / 51

Základní vztahy a testy 21. Vzdálenost bodu od přímky d(a, p) Dáno: Bod A = [x A, y A ], přímka p, p(p 1, P 2), P 1 = [x 1, y 1], P 2 = [x 2, y 2]. Hledáme: d(a, p). d(a, p) = a x A + b y A + c a2 + b 2 d(a, p) = x A(y 1 y 2) + x 1(y 2 y A ) + x 2(y A y 1) (x2 x 1) 2 + (y 2 y 1) 2 Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 23 / 51

Základní vztahy a testy 22. Test existence průsečíku dvou úseček Dáno: Hledáme: P 1P 2 P 3P 4. Úsečka P 1P 2, kde P 1 = [x 1, y 1], P 2 = [x 2, y 2] a úsečka P 3P 4, kde P 3 = [x 3, y 3], P 4 = [x 4, y 4]. Opakovaná aplikace HalfPlane testu, celkem 4x: analýza polohy koncových bodů jedné úsečky vzhledem k druhé úsečce a naopak. x2 t 1 = x1 y2 y1 x2 x 4 x 1 y 4 y 1 t 2 = x1 y2 y1 x 3 x 1 y 3 y 1 x4 t 3 = x3 y4 y3 x4 x 1 x 3 y 1 y 3 t 4 = x3 y4 y3 x 2 x 3 y 2 y 3 Průsečík neexistuje, pokud t 1 t 2 mají stejné znaménko nebo t 3 a t 4 mají stejné znaménko, tj. koncové body jedné úsečky vzhledem k druhé úsečce leží ve stejných polorovinách. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 24 / 51

Základní vztahy a testy 23. Test existence průsečíku dvou přímek Dáno: Hledáme: p 1 p 2? Směrové vektory: Přímka p 1, p 1 P 1, P 2, P 1 = [x 1, y 1], P 2 = [x 2, y 2] a přímka p 2, p 2 P 3, P 4, P 3 = [x 3, y 3], P 2 = [x 4, y 4]. u = (x2 x 1, y 2 y 1) v = (x4 x 3, y 4 y 3) Determinant test: t = ux v x uy v y { t = 0 t 0 jsou nejsou Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 25 / 51

Základní vztahy a testy 24. Průsečík dvou úseček/přímek Dáno: Úsečka P 1P 2, kde P 1 = [x 1, y 1], P 2 = [x 2, y 2] a úsečka P 3P 4, kde P 3 = [x 3, y 3], P 4 = [x 4, y 4]. Hledáme: p 1 p 2 = Q. u = (x2 x 1, y 2 y 1) v = (x4 x 3, y 4 y 3) w = (x1 x 3, y 1 y 3) k 1 = v xw y v y w x k 2 = u xw y u y w x k 3 = v y u x v xu y α = k1 k 3 β = k2 k 3 Pokud k 1 = 0 a k 2 = 0, úsečky jsou rovnoběžné. Pokud k 1 = 0, k 2 = 0 a k 3 = 0 úsečky jsou kolineární. Pokud α 0, 1 a β 0, 1, průsečík úseček Q existuje, x Q = x 1 + αu x = x 3 + βv x y Q = y 1 + αu y = y 3 + βv y U testu průsečíku přímek α, a β,. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 26 / 51

Základní vztahy a testy 25. Průsečík 3 přímek v jednom bodě Dáno: přímka p 1(a 1, b 1, c 1), p 2(a 2, b 2, c 2), p 3(a 3, b 3, c 3), Hledáme: Protínají se v jednom bodě? Používán determinant test a 1 b 1 c 1 t = a 1 b 2 c 2 a 3 b 3 c 3 { t = 0 t 0 protínají se v jednom bodě, neprotínají se v jednom bodě. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 27 / 51

Základní vztahy a testy 26. Odchylka dvou přímek Dáno: Přímka p 1, p 1 P 1, P 2, P 1 = [x 1, y 1 ], P 2 = [x 2, y 2 ] a přímka p 2, p 2 P 3, P 4, P 3 = [x 3, y 3 ], P 2 = [x 4, y 4 ]. Hledáme: odchylku ϕ přímek p 1, p 2. Směrové vektory Odchylka ϕ přímek p 1, p 2, ϕ π 2, π 2 u = (x2 x 1, y 2 y 1 ) v = (x4 x 3, y 4 y 3 ) u v cos ϕ = u v Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 28 / 51

Základní vztahy a testy 27. Kružnice daná trojicí bodů Dáno: Kružnice k, k(p 1, P 2, P 3) kde P 1 = [x 1, y 1], P 2 = [x 2, y 2], P 3 = [x 3, y 3]. Hledáme: k(s, r), kde S = [m, n]. m = k12( k4) + k11k5 (k10 + k4k5)k6 0.5, x 3( k 4) + x 2k 5 + x 1( k 6) n = k1( k9) + k2k8 + k3( k7) 0.5 y 1( k 9) + y 2k 8 + y. 3( k 7) r = (x 1 m) 2 + (y 1 n) 2 k 1 = x1 2 + y1 2 k 5 = y 1 y 3 k 9 = x 2 x 3 k 2 = x2 2 + y2 2 k 6 = y 2 y 3 k 10 = x1 2 k 3 = x3 2 + y3 2 k 7 = x 1 x 2 k 11=x2 2 k 4 = y 1 y 2 k 8 = x 1 x 3 k 12 = x3 2 Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 29 / 51

Základní vztahy a testy 28. Poloha bodu a kružnice I. Dáno: Kružnice k, k(p 1, P 2, P 3 ), kde P 1 = [x 1, y 1 ], P 2 = [x 2, y 2 ], P 3 = [x 3, y 3 ], bod P = [x, y]. Hledáme: Poloha bodu P vzhledem ke k. Testovací kritérium t: t > 0 t = (x m) 2 + (y n) 2 r 2 t = 0 t < 0 P leží vně k P k P leží uvnitř k m = 0.5 k 12( k 4 ) + k 11 k 5 (k 10 + k 4 k 5 )k 6, x 3 ( k 4 ) + x 2 k 5 + x 1 ( k 6 ) n = 0.5 k 1( k 9 ) + k 2 k 8 + k 3 ( k 7 ) y 1 ( k 9 ) + y 2 k 8 + y 3 ( k 7 ). k 1 = x 2 1 + y 2 1 k 5 = y 1 y 3 k 9 = x 2 x 3 k 2 = x 2 2 + y 2 2 k 6 = y 2 y 3 k 10 = x 2 1 k 3 = x 2 3 + y 2 3 k 7 = x 1 x 2 k 11 = x 2 2 k 4 = y 1 y 2 k 8 = x 1 x 3 k 12 = x 2 3 Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 30 / 51

Základní vztahy a testy 29. Poloha bodu a kružnice II. Kružnice k, k(p 1, P 2, P 3), kde P 1 = [x 1, y 1], P 2 = [x 2, y 2], P 3 = [x 3, y 3], Dáno: bod P = [x, y]. Hledáme: Poloha bodu P vzhledem ke k. Varianta bez dělení s použitím determinantu, často používána. Předpoklad: body P 1, P 2, P 3 uspořádány po směru hodinových ručiček. Testovací kritérium t: x y x 2 + y 2 t = x 1 y 1 x1 2 + y 1 2 x 2 y 2 x2 2 + y 2 2 x 3 y 3 x3 2 + y 3 2 t > 0 t = 0 t < 0 P leºí vn k P k P leºí uvnit k Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 31 / 51

Základní vztahy a testy 30. Poloha úsečky a kružnice Dáno: Hledáme: Kružnice k : (S, r), kde S = [m, n] a úsečka P 1P 2, kde P 1 = [x 1, y 1], P 2 = [x 2, y 2] Vzájemná poloha k a P 1P 2: u = (x2 x 1, y 2 y 1) d = testovací kritérium t : t > 0 t = r 2 d 2 D 2 t = 0 t < 0 u 2 x + u 2 y D = P 1P 2 protíná k P 1P 2 je tečna k P 1P 2 neprotíná k x1 m y 1 n x2 m y 2 n Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 32 / 51

Základní vztahy a testy 31. Průsečík úsečky a kružnice Dáno: Kružnice k : (S, r), kde S = [m, n],úsečka P 1 P 2, kde P 1 = [x 1, y 1 ], P 2 = [x 2, y 2 ]. Hledáme: Kružnice k(s, r) P 1 P 2 = Q 1, Q 2 u = (x2 x 1, y 2 y 1 ) d = ux 2 + uy 2 D = t = r 2 d 2 D 2 sgn(u y ) = Souřadnice průsečíku: { 1 u y < 0 1 u y 0 x 1 m y 1 n x 2 m y 2 n Pokud x Q1,2 = uy D ± sgn(uy )ux t d 2 y Q1,2 = ux D ± uy t d 2 t > 0 t = 0 t < 0 2 průsečíky 1 průsečík 0 průsečíků Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 33 / 51

Základní vztahy a testy 32. Analýza polohy dvou kružnic Dáno: Kružnice k 1 : (S 1, r 1) a k 2 : (S 2, r 2), kde S 1 = [m 1, n 1] a S 2 = [m 2, n 2]. Hledáme: Vzájemná poloha k 1, k 2. Vzdálenost středů d: d = (m 2 m 1) 2 + (n 2 n 1) 2 Pokud: d = 0 k 1, k 2 soustředné 0 < d < r 2 r 1 jedna kružnice uvnitř druhé d = r 2 r 1 k 1, k 2 vnitřní dotyk r 2 r 1 < d < r 1 + r 2 k 1, k 2 mají 2 průsečíky d = r 1 + r 2 k 1, k 2 vnější dotyk d > r 1 + r 2 k 1 vně k 2 Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 34 / 51

Základní vztahy a testy 33. Průsečík dvojice kružnic Dáno: Kružnice k 1 : (S 1, r 1) a k 2 : (S 2, r 2), kde S 1 = [m 1, n 1] a S 2 = [m 2, n 2]. Hledáme: Kružnice k 1 k 2 = Q 1, Q 2. Vzdálenost středů d: d = (m 2 m 1) 2 + (n 2 n 1) 2 Souřadnice průsečíků: x Q1,2 = y Q1,2 = m1 + m2 + (m2 m1)(r 1 2 r2 2 ) ± 2 2d 2 n2 n1 ± ((r1 + r 2) 2d 2 d 2 )(d 2 (r 2 2 r 1) 2 ) n1 + n2 + (n2 n1)(r 1 2 r2 2 ) ± 2 2d 2 m2 m1 ± ((r1 + r 2) 2d 2 d 2 )(d 2 (r 2 2 r 1) 2 ) Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 35 / 51

34. Plocha trojúhelníku Základní vztahy a testy Dáno: Vrcholy P 1, P 2, P 3, kde P 1 = [x 1, y 1], P 2 = [x 2, y 2], P 3 = [x 3, y 3]. Hledáme: Plocha trojúhelníku S. S = 1 2 x 1 y 1 1 x 2 y 2 1 x 3 y 3 1 Pokud body P 1, P 2, P 3 orientovány po směru hod. ručiček, S > 0, v opačném případě S < 0. Vzorec představuje Half Plane test, lze použít jako test orientace vrcholů v trojúhelníku. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 36 / 51

Základní vztahy a testy 35. Plocha obecného mnohoúhelníku Dáno: Vrcholy mnohoúhelníku P 1,..., P n, kde P i = [x i, y i]. Hledáme: Plocha mnohoúhelníku A. LH vzorec: A = 1 2 n x i (y i+1 y i 1 ) i=1 Pokud body P 1,..., P n, orientovány po směru hod. ručiček, pak S > 0, v opačném případě S < 0. Vzorec lze použít jako test orientace vrcholů. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 37 / 51

Základní vztahy a testy 36. Centroid mnohoúhelníku Dáno: Vrcholy mnohoúhelníku P 1,..., P n, kde P i = [x i, y i ]. Hledáme: centroid mnohoúhelníku x c, y c. Výpočet centroidu (těžiště) mnohoúhelníku: kde x c = 1 6A y c = 1 6A n (x i + x i+1 )(x i y i+1 x i+1 y i ), i=1 n (y i + y i+1 )(x i y i+1 x i+1 y i ), i=1 A = 1 2 n x i (y i+1 y i 1 ). i=1 Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 38 / 51

Základní vztahy a testy 37. Poloha bodu a trojúhelníku Dáno: Vrcholy P 1, P 2, P 3 a testovaný bod P, kde P 1 = [x 1, y 1], P 2 = [x 2, y 2], P 3 = [x 3, y 3], P = [x, y]. Hledáme: Poloha P vzhledem k. Předpokládáme, že vrcholy trojúhelníku uspořádány po směru hodinových ručiček. Používán opakovaný Hafl Plane test (nad každou stranou ). Testovací kritérium: t 1 = (x 2 x 1)(y y 1) (y 2 y 1)(x x 1) t 2 = (x 3 x 2)(y y 2) (y 3 y 2)(x x 2) t 3 = (x 1 x 3)(y y 3) (y 1 y 3)(x x 3) Pak t 1 > 0 t 2 > 0 t 3 > 0 P uvnitř. t 1 < 0 t 2 < 0 t 3 < 0 P vně. t 1 = 0 t 2 = 0 t 3 = 0 P na hraně. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 39 / 51

Datové modely 38. Datové modely V praxi používány dva základní datové modely: Špagetový model: Neumožňuje ukládat topologické vazby, hodí se pouze pro jednoduché úlohy. Nelze uchovávat vzájemnou polohu prvků, např. sousedství Topologický model: Komplexní model umožňující ukládání topologických vazeb mezi prvky. Používán Doubly Connected Half Edge List. Při designu programů využity vlastnosti OOP, programy strukturovány do tříd Při návrhu tříd a jejich vzájemných vztahů používány principy dědičnosti i kompozice (ISA-HASA test). Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 40 / 51

Datové modely Špagetový model 39. Špagetový model a jeho implementace Komplexní návrh využívá společného předka, abstraktní třídu GO (Grafic Object), jejímiž potomky jsou tří Point, Line, Polygon. Asociativní kontejnery (set). Zjednodušený návrh: pro návrh tříd Line, Polygon využit princip kompozice. Využívání dynamických datových struktur: Sekvenční kontejnery (list, vector,...). Kontejnerové adaptéry (queue, stack, priority_queue). Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 41 / 51

40. Třída Point Návrh třídy Point: class Point2D { private: double x, y; Datové modely Špagetový model... } public: Point2D() : x(0), y(0) {} Point2D(double xx, double yx) : x(xx), y(yy) {} Point2D(const Point2D &p); bool operator < (const Point2D &p); bool operator ==(const Point2D &p); bool operator!=(const Point2D &p); Point2D operator =(const Point2D &p); Vhodné definovat operátory: ==,!=,=,<. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 42 / 51

Datové modely Špagetový model 41. Předefinování oprátorů v třídě Point Operátor = zohledňuje práci s reálnými čísly, test na rovnost není bezpečný! bool Point2D::operator ==(const Point2D &p) { } Ostatní operátory: return (x-p.x)*(x-p.x)+(y-p.y)*(y-p.y) < MIN * MIN; Point2D::Point2D(const Point2D &p) { } if (this!= &p){ this->x=p.x; this->y=p.y; bool Point2D::operator < (const Point2D &p) { } return (this->x<p.x) (this->x==p.x)&&(this->y<p.y); Point2D Point2D:: operator =(const Point2D &p){ if (this!= &p){ } return *this; } this->x=p.x; this->y=p.y; Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 43 / 51

42. Třída Line Datové modely Špagetový model Navržena za použití principu kompozice (IS/HAS test). Linie MÁ dva koncové body. Datové položky třídy Line tvoří instance třídy Point. class Line { private: Point2D p1; Point2D p2; public: Line(); Line( Point2D &p1, Point2D &p2); Line(const Line &l);... }; Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 44 / 51

Datové modely Špagetový model 43. Třída LinesList Obsahuje seznam jednotlivých linií uložených v STL kontajneru vector, list. Ukázka třídy LinesList: class LinesList { private: std::vector <Edge> edges; //Seznam linii }; public: EdgeList(); void add(edge e){edges.push(e);}; void clear(){edges.clear();};... Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 45 / 51

Datové modely 44. Doubly Connected Edge List Doubly Connected Edge List Jedna z nejčastěji používaných datových struktur výpočetní geometrie. Popisuje dekompozici kartografického díla na OD, 1D a 2D entity, tj. na body, linie a polygony) se zachováním vzájemných topologických vazeb vytvoření grafové struktury DCEL. Obsahuje informace o každém bodu (Point), hraně (Edge) a polygonu (Face). K prvkům mohou být také ukládány dodatečné informace atributového charakteru. Umožňuje nalézt všechny hrany náležící určitému polygonu a procházet jimi v obou směrech, polygony sousedící s určitým polygonem. Každá orientovaná hrana obvykle sousedí se dvěma polygony, je průsečnicí dvou polorovin. Každou hranu, tzv. Half Edge, nutno popsat z obou polorovin. Obě HalfEdge vytvářejí zdvojenou hranu, tzv. Twin Edge. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 46 / 51

45. Struktura DCEL Datové modely Doubly Connected Edge List Každý bod nese pointer na hranu, jejíž je počátečním bodem. Half Edge je orientována, nese pointer na počátečním bodě v. Uchová také pointer na předchozí a následující Half Edge a Half Edge s protilehlou orientací sdílenou v rámci Twin Edge. Dále obsahuje pointer na incidující polygon vlevo od Half Edge. Hrany v polygonu uloženy ve směru hodinových ručiček. Obsahuje -li nějaký polygon otvory, jsou popsány jako polygony s opačnou orientací, tj. po směru hodinových ručiček. Všechny hrany tvořící otvor leží vlevo od hran nadřazeného polygonu Každý polygon nese informaci o: vnitřních komponentách: pointer na svou libovolnou hranu (NULL, pokud neuzavřen). vnějších komponentách: pointer na libovolnou hranu otvoru (NULL, pokud žádný není). Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 47 / 51

Datové modely Doubly Connected Edge List 46. Ilustrace Doubly Connected Edge List Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 48 / 51

Datové modely Doubly Connected Edge List 47. Datový model DCEL Tabulka vrcholů (Vertices): Vertex x y Inc. hrana 1 978 2110 e 11 2 867 2086 e 12 3 817 2213 e 21............ Tabulka polygonů (Faces): Face Vnitřní hrana Vnější hrana f 1 NULL e 11 f 2 NULL e 12 f 3 NULL NULL......... Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 49 / 51

Datové modely Doubly Connected Edge List 48. Datový model DCEL Tabulka Half Edges: Half Edge Start Twin Incid. polygon Další hrana Předchozí hrana e 11 1 e 41 f 1 e 12 e 15 e 12 2 e 51 f 1 e 13 e 11 e 13 3 e 25 f 1 e 14 e 12 e 14 7 e 24 f 1 e 15 e 13 e 15 6 e 42 f 1 e 11 e 14 e 21 3 e 34 f 2 e 22 e 25 e 22 4 e 33 f 2 e 23 e 21 e 23 5 e 32 f 2 e 24 e 22 e 24 6 e 14 f 2 e 25 e 23.................. Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 50 / 51

Datové modely Doubly Connected Edge List 49. Práce s reálnými čísly U (m + n) reprezentace čísel v důsledku přeplnění mantisy při provádění aritmetických operací dochází ke ztrátám přesnosti zaokrouhlením čísla. Důsledky: Porovnávání čísel Porovnáváme -li dvě reálné hodnoty a, b, pak podmínka a = b. V obecném případě nemusí být pravdivá. Testujeme absolutní hodnotu jejich rozdílu a b s hodnotou ε 0: a b < ε. Komutativní, asociativní a distributivní zákony Při práci s reálnými čísly tyto zákony obecně nemusejí platit. Pozor při návrhu operátoru = pro jednotlivé třídy!!! Tomáš Bayer bayertom@natur.cuni.cz (Katedra Úvodaplikované do výpočetní geoinformatiky geometrie. azákladní kartografie. vztahy. Přírodovědecká fakulta UK.) 51 / 51