// Path: src/org/poly2tri/triangulation/delaunay/sweep/DTSweepConstraint.java
// public class DTSweepConstraint extends TriangulationConstraint
// {
//     public TriangulationPoint p;
//     public TriangulationPoint q;
//     
//     /**
//      * Give two points in any order. Will always be ordered so
//      * that q.y > p.y and q.x > p.x if same y value 
//      * 
//      * @param p1
//      * @param p2
//      */
//     public DTSweepConstraint( TriangulationPoint p1, TriangulationPoint p2 )
// //        throws DuplicatePointException
//     {
//         p = p1;
//         q = p2;
//         if( p1.getY() > p2.getY() )
//         {
//             q = p1;
//             p = p2;
//         }
//         else if( p1.getY() == p2.getY() )
//         {
//             if( p1.getX() > p2.getX() )
//             {
//                 q = p1;
//                 p = p2;
//             }
//             else if( p1.getX() == p2.getX() )
//             {
// 
//             }
//         }
//         q.addEdge(this);
//     }
// 
// //    public TPoint intersect( TPoint a, TPoint b )
// //    {
// //        double pqx,pqy,bax,bay,t;
// //        
// //        pqx = p.getX()-q.getX();
// //        pqy = p.getY()-q.getY();
// //        t = pqy*(a.getX()-q.getX()) - pqx*(a.getY()-q.getY() );
// //        t /= pqx*(b.getY()-a.getY()) - pqy*(b.getX()-a.getX());
// //        bax = t*(b.getX()-a.getX()) + a.getX();
// //        bay = t*(b.getY()-a.getY()) + a.getY();
// //        return new TPoint( bax, bay );
// //    }
// 
//     public TriangulationPoint getP()
//     {
//         return p;
//     }
// 
//     public TriangulationPoint getQ()
//     {
//         return q;
//     }
// }
// 
// Path: src/org/poly2tri/triangulation/point/TPoint.java
// public class TPoint extends TriangulationPoint
// {
//     private double _x;
//     private double _y;
//     private double _z;
//     
//     public TPoint( double x, double y )
//     {
//         this( x, y, 0 );
//     }
// 
//     public TPoint( double x, double y, double z )
//     {
//         _x = x;
//         _y = y;
//         _z = z;
//     }
// 
//     public double getX() { return _x; }
//     public double getY() { return _y; }
//     public double getZ() { return _z;  }
// 
//     public float getXf() { return (float)_x; }
//     public float getYf() { return (float)_y; }
//     public float getZf() { return (float)_z;  }
// 
//     @Override
//     public void set( double x, double y, double z )
//     {
//         _x = x;
//         _y = y;
//         _z = z;
//     }
// 
// }


import java.util.ArrayList;
import org.poly2tri.triangulation.TriangulationPoint;
import org.poly2tri.triangulation.delaunay.sweep.DTSweepConstraint;
import org.poly2tri.triangulation.point.TPoint;
        {
            cEdge[0] = true;
        }
    }

    // Mark edge as constrained
    public void markConstrainedEdge( TriangulationPoint p, TriangulationPoint q )
    {
        if( ( q == points[0] && p == points[1] ) || ( q == points[1] && p == points[0] ) )
        {
            cEdge[2] = true;
        }
        else if( ( q == points[0] && p == points[2] ) || ( q == points[2] && p == points[0] ) )
        {
            cEdge[1] = true;
        }
        else if( ( q == points[1] && p == points[2] ) || ( q == points[2] && p == points[1] ) )
        {
            cEdge[0] = true;
        }
    }

    public double area()
    {
        double a = (points[0].getX() - points[2].getX())*(points[1].getY() - points[0].getY());
        double b = (points[0].getX() - points[1].getX())*(points[2].getY() - points[0].getY());

        return 0.5*Math.abs( a - b );
    }

// Path: src/org/poly2tri/triangulation/delaunay/sweep/DTSweepConstraint.java
// public class DTSweepConstraint extends TriangulationConstraint
// {
//     public TriangulationPoint p;
//     public TriangulationPoint q;
//     
//     /**
//      * Give two points in any order. Will always be ordered so
//      * that q.y > p.y and q.x > p.x if same y value 
//      * 
//      * @param p1
//      * @param p2
//      */
//     public DTSweepConstraint( TriangulationPoint p1, TriangulationPoint p2 )
// //        throws DuplicatePointException
//     {
//         p = p1;
//         q = p2;
//         if( p1.getY() > p2.getY() )
//         {
//             q = p1;
//             p = p2;
//         }
//         else if( p1.getY() == p2.getY() )
//         {
//             if( p1.getX() > p2.getX() )
//             {
//                 q = p1;
//                 p = p2;
//             }
//             else if( p1.getX() == p2.getX() )
//             {
// 
//             }
//         }
//         q.addEdge(this);
//     }
// 
// //    public TPoint intersect( TPoint a, TPoint b )
// //    {
// //        double pqx,pqy,bax,bay,t;
// //        
// //        pqx = p.getX()-q.getX();
// //        pqy = p.getY()-q.getY();
// //        t = pqy*(a.getX()-q.getX()) - pqx*(a.getY()-q.getY() );
// //        t /= pqx*(b.getY()-a.getY()) - pqy*(b.getX()-a.getX());
// //        bax = t*(b.getX()-a.getX()) + a.getX();
// //        bay = t*(b.getY()-a.getY()) + a.getY();
// //        return new TPoint( bax, bay );
// //    }
// 
//     public TriangulationPoint getP()
//     {
//         return p;
//     }
// 
//     public TriangulationPoint getQ()
//     {
//         return q;
//     }
// }
// 
// Path: src/org/poly2tri/triangulation/point/TPoint.java
// public class TPoint extends TriangulationPoint
// {
//     private double _x;
//     private double _y;
//     private double _z;
//     
//     public TPoint( double x, double y )
//     {
//         this( x, y, 0 );
//     }
// 
//     public TPoint( double x, double y, double z )
//     {
//         _x = x;
//         _y = y;
//         _z = z;
//     }
// 
//     public double getX() { return _x; }
//     public double getY() { return _y; }
//     public double getZ() { return _z;  }
// 
//     public float getXf() { return (float)_x; }
//     public float getYf() { return (float)_y; }
//     public float getZf() { return (float)_z;  }
// 
//     @Override
//     public void set( double x, double y, double z )
//     {
//         _x = x;
//         _y = y;
//         _z = z;
//     }
// 
// }


// Path: src/org/poly2tri/triangulation/delaunay/DelaunayTriangle.java
import java.util.ArrayList;
import org.poly2tri.triangulation.TriangulationPoint;
import org.poly2tri.triangulation.delaunay.sweep.DTSweepConstraint;
import org.poly2tri.triangulation.point.TPoint;

        {
            cEdge[0] = true;
        }
    }

    // Mark edge as constrained
    public void markConstrainedEdge( TriangulationPoint p, TriangulationPoint q )
    {
        if( ( q == points[0] && p == points[1] ) || ( q == points[1] && p == points[0] ) )
        {
            cEdge[2] = true;
        }
        else if( ( q == points[0] && p == points[2] ) || ( q == points[2] && p == points[0] ) )
        {
            cEdge[1] = true;
        }
        else if( ( q == points[1] && p == points[2] ) || ( q == points[2] && p == points[1] ) )
        {
            cEdge[0] = true;
        }
    }

    public double area()
    {
        double a = (points[0].getX() - points[2].getX())*(points[1].getY() - points[0].getY());
        double b = (points[0].getX() - points[1].getX())*(points[2].getY() - points[0].getY());

        return 0.5*Math.abs( a - b );
    }

    public TPoint centroid()