Package ru.dubov.primitives

Examples of ru.dubov.primitives.Triangle


    public Triangle removeEar() {
       
        DoublyLinkedCyclicList<Point>.Node adjLeft = ears.head().value.prev;
        DoublyLinkedCyclicList<Point>.Node adjRight = ears.head().value.next;
       
        Triangle ear = new Triangle(adjLeft.value,
                ears.head().value.value, adjRight.value);     

        ears.head().value.delete(); // Delete in vertices
        ears.head().delete(); // Delete in ears
       
View Full Code Here


       
        if (! isConvex(node, isClockwise)) {
            return false;
        }
       
        Triangle tr = new Triangle(node.prev.value, node.value, node.next.value);
       
        DoublyLinkedCyclicList<Point>.Node cur = vertices.head();
        do {
            if (tr.pointInside(cur.value)) return false;
            cur = cur.next;
        } while(cur != vertices.head());
       
        return true;
    }
View Full Code Here

       
        if(p.size() < 3) {
            return;
        }
        if(p.size() == 3) {
            result.add(new Triangle(p.get(0), p.get(1), p.get(2)));
            return;
        }
       
        boolean diag = true;
        int start = 0, finish = 0;
View Full Code Here

       
        while (p.size() > 3) {
           
            int li = -1;
            Point l, v, r;
            Triangle tr;
            boolean isEar;
            int tryings = 0;
           
            do {
                tryings ++;
               
                if (tryings >= p.size()) {
                    // Endless loop; bad input
                    return null;
                }
               
                li ++;
                l = p.get(li % p.size());
                v = p.get((li+1) % p.size());
                r = p.get((li+2) % p.size());
                tr = new Triangle(l, v, r);
               
                isEar = Point.isLeftTurn(l, v, r) ^ isClockwise;
               
                if (isEar) { // Further analysis required
                    for (int i = 0; i < p.size(); i++) {
                        if (tr.pointInside(p.get(i))) {
                            isEar = false;
                            break;
                        }
                    }
                }
               
            } while(! isEar); // Until we've discovered an ear
           
            // Guaranteed that we got an ear here
           
            result.add(tr);
            p.remove((li+1) % p.size());
           
        }
       
        if (p.size() == 3) { // The last triangle
            result.add(new Triangle(p.get(0), p.get(1), p.get(2)));
        }
       
        return result;
    }
View Full Code Here

        Stack<Point> S = new Stack<Point>();
        S.push(p0);
        S.push(points.get(0));
       
        Point top, nextToTop;
        Triangle lastAdded = null, temp = null,
                 lastAddedInStack = null, tempInStack = null;
       
        for (int i = 0; i < points.size(); i++) {
           
            if (i < points.size() - 1) {
               
                // Adding new "narrow" triangle with p0 as one of its vertices
                temp = new Triangle(p0, points.get(i), points.get(i+1));
               
                 // Linking the triangles (!)
                temp.link(lastAdded);
               
                result.add(temp);
                lastAdded = temp;
            }
           
            if (i > 0) {
               
                // using the idea of Graham's scan
                // to make the triangulation "convex" (!)
               
                top = S.peek();
                nextToTop = S.elementAt(S.size() - 2);
               
                while (isRightTurn(nextToTop, top, points.get(i))) {
                   
                    tempInStack = new Triangle(nextToTop, top, points.get(i));
                   
                    // Linking the triangles (!)
                    tempInStack.link(lastAddedInStack);
                    int k = 0;
                    for (int j = result.size()-1; j >= 0; j--) {
View Full Code Here

TOP

Related Classes of ru.dubov.primitives.Triangle

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.