Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package harjoitustyo;
- import java.util.ArrayList;
- /*Suunnittele ja toteuta tarvittavat tietorakenteet hierarkisten mallien
- binääripuuesitykselle. Toteuta puuesityksen läpikäyvä aliohjelma, joka laskee objektin kärkipisteiden koordinaatit
- juurisolmun koordinaatistossa.
- */
- public class Puu {
- private Solmu juurisolmu;
- public Puu(Solmu juuri) {
- this.juurisolmu = juuri;
- }
- /*
- * Laskee solmussa sijaitsevan objektin kärkipisteiden koordinaatit juurisolmun koordinaatistossa
- */
- public ArrayList<Vektori> laskeKoordinaatit(Solmu solmu) {
- ArrayList<Vektori> tulos = new ArrayList<Vektori>();
- Solmu temppi = new Solmu();
- Vektori vTemp = new Vektori();
- temppi = solmu.getVanhempi();
- for (Vektori vektori : solmu.getKarkipisteet()) {
- if (solmu.equals(temppi.getVasenLapsi())) {// tarkistetaan onko solmu vasen vai oikea lapsi
- vTemp = temppi.getVasenMatriisi().kertaa(vektori);
- if(temppi.getVanhempi() != null) temppi = temppi.getVanhempi();
- } else {
- vTemp = temppi.getOikeaMatriisi().kertaa(vektori);
- if(temppi.getVanhempi() != null) temppi = temppi.getVanhempi();
- }
- while (temppi.getVanhempi() != null) {
- vTemp = temppi.getVanhempi().getOikeaMatriisi().kertaa(vTemp);
- temppi = temppi.getVanhempi();
- }
- tulos.add(vTemp);
- }
- return tulos;
- }
- /*
- * Lisää solmun
- */
- public void lisaaSolmu(Solmu solmu) {
- Solmu temppi = new Solmu();
- temppi = juurisolmu;
- // lisättävä ei ole primitiiviobjekti
- if (!solmu.getPrimitiivi()) {
- while (temppi.getOikeaLapsi() != null)
- temppi = temppi.getOikeaLapsi();
- solmu.setVanhempi(temppi);
- temppi.setOikeaLapsi(solmu); // TODO matriisien lisääminen?
- return;
- }
- // lisättävä on primitiiviobjekti
- while (temppi.getVasenLapsi() != null) {
- if (temppi.getOikeaLapsi() == null) {
- solmu.setVanhempi(temppi);
- temppi.setOikeaLapsi(solmu);
- return;
- }
- temppi = temppi.getOikeaLapsi();
- }
- solmu.setVanhempi(temppi);
- temppi.setVasenLapsi(solmu);
- }
- public static void main(String[] args) {
- double[][] luvut = { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 },
- { 0, 0, 0, 1 } };
- Matriisi m1 = new Matriisi(luvut);
- Vektori v1 = new Vektori(2, 2, 2, 2);
- Vektori v2 = new Vektori(1, 2, 1, 2);
- Vektori v3 = new Vektori(3, 3, 3, 3);
- Vektori v4 = new Vektori(0, 0, 2, 2);
- Vektori v5 = new Vektori(5, 5, 5, 5);
- Vektori v6 = new Vektori(0, 1, 6, 1);
- ArrayList<Vektori> kuvio = new ArrayList<Vektori>();
- kuvio.add(v1);
- Solmu s1 = new Solmu(kuvio, m1, m1, true);
- kuvio.add(v2);
- Solmu s2 = new Solmu(kuvio, m1, m1, true);
- kuvio.add(v3);
- Solmu s3 = new Solmu(kuvio, m1, m1, false);
- kuvio.add(v4);
- Solmu s4 = new Solmu(kuvio, m1, m1, true);
- kuvio.add(v5);
- Solmu s5 = new Solmu(kuvio, m1, m1, false);
- kuvio.add(v6);
- Solmu s6 = new Solmu(kuvio, m1, m1, true);
- Puu puu = new Puu(s1);
- puu.lisaaSolmu(s2);
- puu.lisaaSolmu(s3);
- puu.lisaaSolmu(s4);
- puu.lisaaSolmu(s5);
- puu.lisaaSolmu(s6);
- ArrayList<Vektori> koordinaatitS2 = puu.laskeKoordinaatit(s2);
- ArrayList<Vektori> koordinaatitS6 = puu.laskeKoordinaatit(s6);
- }
- }
Add Comment
Please, Sign In to add comment