1. Ustvarite spletno aplikacijo, ki bo omogočala prikaz zemljevida ter kolesarskih poti na zemljevidu. Za prikaz zemljevida na spletni strani uporabite knjižnico OpenLayers (http://openlayers.org). Za zemljevid lahko uporabite Google Maps. Kolesarko pot sestavite s pomočjo koordinat GPS, s katerimi tvorite lomljenko, katero tudi prikažete na spletni strani. Zemljevid centrirajte na Slovenijo (15.0, 46.0).
Nastavite naslednje atribute:
Prikazano območje: (-20037508.34,-20037508.34,20037508.34,20037508.34)
Projekcija karte: EPSG:900913 (google maps)
Projekcija prikaza: EPSG:4326 (zapis GPS)
Pretvorba projekcije:
reproject = function(x,y)
{
var point = new OpenLayers.LonLat(x,y).transform(
new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
return point;
}
2. Dodajte možnost vnašanja poti z uporabo OL kontrol za risanje (http://openlayers.org/dev/examples/draw-feature.html) ter izris že obstoječih poti z lomljenkami. Obstoječe poti naj bodo zaenkrat podane v nizih (“x1,y1“, “x2,y2“,…,”xnyn“), katere tvorite sami. Z zapis poti v OL uporabite OpenLayers.Geometry.LineString, v katere vnesete točke poti. Vse točke morate projicirati v projekcijo EPSG:900913 (funkcija reproject). Primer risanja najdete na povezavi. Upoštevajte, da funkcija reproject vrača rezultat v strukturi OpenLayers.LonLat, za tvorjenje geometrije pa morate pretvoriti v strukturoOpenLayers.Geometry.Point.
3. Ustvarite strukturo za zapis geografske točke. Struktura naj vsebuje zemljepisno širino in dolžino, nadmorsko višino ter časovno značko. Kolesarske poti lahko zapišete kot polje točk. Strukturo bomo uporabljali za animacijo ter za izračune poti.
Napišite funkcijo za pretvorbo kolesarske poti z vaše strukture v strukturo, katero lahko prikažete v OpenLayers (vector). V spletni aplikaciji omogočite prikaz različnih kolesarskih poti (dodajte nov sloj za vsako kolesarsko pot), vsako kolesarsko pot pa prikažite v drugi barvi.
Pripravite si tudi funkcije za računanje dolžine poti, dolžino vzpona in spusta, višinsko razliko ter povprečno hitrost celotne prevožene poti ter posameznih odsekov kolesarske poti.
4. Ustvarite “umetne” zapise kolesarskih poti in zapisov GPS. Prikažite animacijo vožnje kolesarjev (zapis GPS) po kolesarskih poteh. Na spletni strani naj bo možno izbrati kolesarsko pot (in kolesarje, ki so vozili po izbrani poti). Vožnjo kolesarja prikažite kot točko, ki se premika po kolesarski poti, vsak kolesar naj bo prikazan z drugačno barvo.
Izpišite podatke o dolžini poti, dolžinah vzopona, spusta, višinske razlike, povprečno hitrost kolesarja, ter trenutno hitrost kolesarja (glede na položaj).
Pri izbiri kolesarske poti se zemljevid samodejno poveča (zoomira) na kolesarsko pot z majhnim odmikom na vsaki strani. Dodajte gumbke za začetek in konec animacije ter spustne menuje za izbiro kolesarske poti in voženj.
Pri animaciji uskladite položaj kolesarja s kolesarsko potjo – se pravi v primeru odstopanja kolesarja popravite njegov položaj da se bo ujemal s kolesarsko potjo. Označite tudi, če kolesar preveč zaide s predpisane poti (izberite toleranco npr. 5m, 10m, 15m) in to tudi označite.
Zaradi praznikov (in enkratne odsotnosti profesorja) smo imeli pred tem kolokvijem predavanja le 2-krat.
Tako so prišle v upoštev naslednja poglavja (kot so zapisana v knjigi Borut Žalik: Algoritmi računalniške geometrije):
Vas zanima kako izgleda kolokvij pri predmetu Uvod v računalniško geometrijo? Klik spodaj …
Implementirajte vsebnostni algoritem točka-mnogokotnik z računanjem kotov.
Vhod predstavljata mnogokotnik, ki ne vsebuje lukenj, in točka p, za katero preverjamo vsebnost.
Izhod algoritma nam pove:
- ali točka leži v notranjosti mnogokotnika,
- ali točka leži zunaj mnogokotnika,
- ali pa točka leži na mnogokotniku (bodisi na robu bodisi na oglišču).
Algoritem poteka tako, da potegnemo poltrak od p do vsakega oglišča mnogokotnika. Nato izračunamo kote med vsakim parom poltrakov, kote pa seštevamo. Če je vsota vseh kotov enaka 2pi , je točka v notranjosti. Če je vsota kotov enaka 0, leži točka zunaj mnogokotnika. Za preverjanje enakosti uporabite toleranco epsilon.
Robni primeri:
- točka p leži na točki mnogokotnika,
- točka p leži na robu mnogokotnika.
Več o algoritmu najdete v knjigi Algoritmi računalniške geometrije (Žalik).
Naloga je vredna 4 točke.