package interpretacja.gramatyka; import interpretacja.Fragment; import interpretacja.Geom; import interpretacja.GrafAdv; import interpretacja.Produkt; import java.util.ArrayList; import java.util.List; public class Prostokat implements GSymbol { private Linia linia = new Linia(); private LiniaKier lKier = new LiniaKier(); @Override public List akceptuj(Produkt h, GrafAdv g) { List ps = new ArrayList(); List p1s = linia.akceptuj(h, g); for (Produkt p1 : p1s) { //System.out.println(" " + p1.n()[0] + "-" + p1.n()[1]); double l1 = Geom.len(g.N(h.n()), g.N(p1.n())); Produkt p1c = new Produkt(p1.n(), p1); p1c.dodajAtr("kat", 90 + (Double)p1.atr("kat")); List p2s = lKier.akceptuj(p1c, g); for (Produkt p2 : p2s) { double l2 = Geom.len(g.N(p1.n()), g.N(p2.n())); //System.out.println(" " + p2.n()[0] + "-" + p2.n()[1]); Produkt p2c = new Produkt(p2.n(), p2); p2c.dodajAtr("kat", 90 + (Double)p2.atr("kat")); List p3s = lKier.akceptuj(p2c, g); for (Produkt p3 : p3s) { double l3 = Geom.len(g.N(p2.n()), g.N(p3.n())); if (Math.abs(l3 - l1) > 5) { continue; } //System.out.println(" " + p3.n()[0] + "-" + p3.n()[1]); Produkt p3c = new Produkt(p3.n(), p3); p3c.dodajAtr("kat", 90 + (Double)p3.atr("kat")); List p4s = lKier.akceptuj(p3c, g); for (Produkt p4 : p4s) { double l4 = Geom.len(g.N(p3.n()), g.N(p4.n())); if (Math.abs(l4 - l2) > 5) { continue; } ps.add(p4); } } } } return ps; } @Override public Fragment ocr(Produkt p, GrafAdv g) { return null; } }