Guest User

Untitled

a guest
Jul 16th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.24 KB | None | 0 0
  1. package harjoitustyo;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. /*Suunnittele ja toteuta tarvittavat tietorakenteet hierarkisten mallien
  6.  binääripuuesitykselle. Toteuta puuesityksen läpikäyvä aliohjelma, joka laskee objektin kärkipisteiden koordinaatit
  7.  juurisolmun koordinaatistossa.
  8. */
  9.  
  10. public class Puu {
  11.     private Solmu juurisolmu;
  12.  
  13.     public Puu(Solmu juuri) {
  14.         this.juurisolmu = juuri;
  15.     }
  16.  
  17.     /*
  18.      * Laskee solmussa sijaitsevan objektin kärkipisteiden koordinaatit juurisolmun koordinaatistossa
  19.      */
  20.     public ArrayList<Vektori> laskeKoordinaatit(Solmu solmu) {
  21.         ArrayList<Vektori> tulos = new ArrayList<Vektori>();
  22.         Solmu temppi = new Solmu();
  23.         Vektori vTemp = new Vektori();
  24.         temppi = solmu.getVanhempi();
  25.         for (Vektori vektori : solmu.getKarkipisteet()) {
  26.             if (solmu.equals(temppi.getVasenLapsi())) {// tarkistetaan onko solmu vasen vai oikea lapsi
  27.                 vTemp = temppi.getVasenMatriisi().kertaa(vektori);
  28.                 if(temppi.getVanhempi() != null) temppi = temppi.getVanhempi();
  29.             } else {
  30.                 vTemp = temppi.getOikeaMatriisi().kertaa(vektori);
  31.                 if(temppi.getVanhempi() != null) temppi = temppi.getVanhempi();
  32.             }
  33.             while (temppi.getVanhempi() != null) {
  34.                 vTemp = temppi.getVanhempi().getOikeaMatriisi().kertaa(vTemp);
  35.                 temppi = temppi.getVanhempi();
  36.             }
  37.             tulos.add(vTemp);
  38.         }
  39.  
  40.         return tulos;
  41.     }
  42.  
  43.     /*
  44.      * Lisää solmun
  45.      */
  46.     public void lisaaSolmu(Solmu solmu) {
  47.         Solmu temppi = new Solmu();
  48.         temppi = juurisolmu;
  49.         // lisättävä ei ole primitiiviobjekti
  50.         if (!solmu.getPrimitiivi()) {
  51.             while (temppi.getOikeaLapsi() != null)
  52.                 temppi = temppi.getOikeaLapsi();
  53.             solmu.setVanhempi(temppi);
  54.             temppi.setOikeaLapsi(solmu); // TODO matriisien lisääminen?
  55.             return;
  56.         }
  57.  
  58.         // lisättävä on primitiiviobjekti
  59.         while (temppi.getVasenLapsi() != null) {
  60.             if (temppi.getOikeaLapsi() == null) {
  61.                 solmu.setVanhempi(temppi);
  62.                 temppi.setOikeaLapsi(solmu);
  63.                 return;
  64.             }
  65.             temppi = temppi.getOikeaLapsi();
  66.         }
  67.         solmu.setVanhempi(temppi);
  68.         temppi.setVasenLapsi(solmu);
  69.     }
  70.  
  71.     public static void main(String[] args) {
  72.         double[][] luvut = { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 },
  73.                 { 0, 0, 0, 1 } };
  74.         Matriisi m1 = new Matriisi(luvut);
  75.         Vektori v1 = new Vektori(2, 2, 2, 2);
  76.         Vektori v2 = new Vektori(1, 2, 1, 2);
  77.         Vektori v3 = new Vektori(3, 3, 3, 3);
  78.         Vektori v4 = new Vektori(0, 0, 2, 2);
  79.         Vektori v5 = new Vektori(5, 5, 5, 5);
  80.         Vektori v6 = new Vektori(0, 1, 6, 1);
  81.         ArrayList<Vektori> kuvio = new ArrayList<Vektori>();
  82.         kuvio.add(v1);
  83.        
  84.         Solmu s1 = new Solmu(kuvio, m1, m1, true);
  85.         kuvio.add(v2);
  86.         Solmu s2 = new Solmu(kuvio, m1, m1, true);
  87.         kuvio.add(v3);
  88.         Solmu s3 = new Solmu(kuvio, m1, m1, false);
  89.         kuvio.add(v4);
  90.         Solmu s4 = new Solmu(kuvio, m1, m1, true);
  91.         kuvio.add(v5);
  92.         Solmu s5 = new Solmu(kuvio, m1, m1, false);
  93.         kuvio.add(v6);
  94.         Solmu s6 = new Solmu(kuvio, m1, m1, true);
  95.        
  96.         Puu puu = new Puu(s1);
  97.         puu.lisaaSolmu(s2);
  98.         puu.lisaaSolmu(s3);
  99.         puu.lisaaSolmu(s4);
  100.         puu.lisaaSolmu(s5);
  101.         puu.lisaaSolmu(s6);
  102.         ArrayList<Vektori> koordinaatitS2 = puu.laskeKoordinaatit(s2);
  103.         ArrayList<Vektori> koordinaatitS6 = puu.laskeKoordinaatit(s6);
  104.     }
  105.  
  106. }
Add Comment
Please, Sign In to add comment