public void typeA(int i, int j, int k) { /* i reflex; use jk */ // System.out.print("\nA "+i+","+j+","+k+":"); // assert(reflex(i), "non reflex i in typeA("+i+","+j+","+k+")"); // assert(k-i > 1, "too small in typeA("+i+","+j+","+k+")"); if (!visible(i, j)) return; int top = j; int w = subD.weight(i, j); if (k - j > 1) { if (!visible(j, k)) return; w += subD.weight(j, k) + 1; } if (j - i > 1) { // check if must use ij, too. PairDeque pair = subD.pairs(i, j); if (!Point.left(sp.p(k), sp.p(j), sp.p(pair.bB()))) { while (pair.more1B() && !Point.left(sp.p(k), sp.p(j), sp.p(pair.underbB()))) pair.popB(); if ((!pair.emptyB()) && !Point.right(sp.p(k), sp.p(i), sp.p(pair.aB()))) top = pair.aB(); else w++; // yes, need ij. top = j already } else w++; // yes, need ij. top = j already } update(i, k, w, top, j); }