Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: pisteistä polygoni

Tumettaja [12.09.2010 00:03:45]

#

Ohjelmani saa aina satunnaisessä järjestyksessä olevan Point-taulukon.
Tarkoituksena on parsia taulukon "ulkoreunat" ja luoda niistä sitten Polygon-objekti. Eli jos nuo alussa olevat pisteet tulostaisi niin näyttäisi tältä:

      ######
   ###########
   #############
   ##############
  #################
 ################

Ja jos parsitut pisteet tulostaisi:

      #    #
   #         #
   #           #
   #            #
  #               #
 #              #

Osaisin luoda itse lopullisista pisteisä kyllä Polygonin mutta onko kellään antaa ideaa kuinka nuo pisteet voisi parsia?

Sami [12.09.2010 00:31:40]

#

Otat vaikka tuon datan rivi kerrallaan käsittelyyn ja haet ne reunat String.indexOf('#') ja String.lastIndexOf('#') -metodeilla.
http://download.oracle.com/javase/6/docs/api/java/lang/String.html

Tumettaja [12.09.2010 17:38:07]

#

Ohjelmassani on kyseinen pätkä:

ArrayList<Point> points = new ArrayList<Point>();

Kuinka saisin rivitettyä tuon listan niin että ylimmällä rivillä olisi pienimmän y arvon omaavat pisteet ja myös niin että x arvotkin ovat järjestyksessä pienimmästä suurimpaan? Tarvitsenko HashMappia vai mitä?

Metabolix [12.09.2010 19:28:37]

#

Voit käyttää seuraavanlaista algoritmia:

jokaiselle pisteelle P
  jos rivin P.y tiedot puuttuvat
    pienin rivillä P.y on P.x
    suurin rivillä P.y on P.x
  muuten
    jos P.x < pienin rivillä P.y
      pienin rivillä P.y on P.x
    jos P.x > suurin rivillä P.y
      suurin rivillä P.y on P.x

Pienimmät ja suurimmat arvot voi tallentaa omiin HashMap-olioihinsa.

Toinen vaihtoehto on toteuttaa Comparator-luokka, joka järjestää pisteet ensisijaisesti y-koordinaatin mukaan ja toissijaisesti x-koordinaatin mukaan. Sitten listan voi järjestää (Collections.sort), minkä jälkeen kunkin rivin ensimmäinen ja viimeinen x-koordinaatti on helppo hakea järjestyksessä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta