private void subdivideSleeve(DelaunayTriangle sleeve)
	{
		//find the chordal axis part dissecting this triangle
		DTSweepConstraint chordalEdge = findIntersectingEdge(sleeve);
		double d0 = Util.distance(chordalEdge, sleeve.points[0]);
		double d1 = Util.distance(chordalEdge, sleeve.points[1]);
		double d2 = Util.distance(chordalEdge, sleeve.points[2]);
		
		ArrayList<TriangulationPoint> pos = new ArrayList<TriangulationPoint>();
		ArrayList<TriangulationPoint> neg = new ArrayList<TriangulationPoint>();
		if(d0>0)
			pos.add(sleeve.points[0]);
		else
			neg.add(sleeve.points[0]);
		if(d1>0)
			pos.add(sleeve.points[1]);
		else
			neg.add(sleeve.points[1]);
		if(d2>0)
			pos.add(sleeve.points[2]);
		else
			neg.add(sleeve.points[2]);
		ChordalAxisPoint p = prunedChordalAxis.getPoint(chordalEdge.p);
		ChordalAxisPoint q = prunedChordalAxis.getPoint(chordalEdge.q);
		if(pos.size()==2)
		{
			double p0 = Math.abs(Util.distance(new DTSweepConstraint(pos.get(0), neg.get(0)),chordalEdge.p));
			double p1 = Math.abs(Util.distance(new DTSweepConstraint(pos.get(1), neg.get(0)),chordalEdge.p));
			boolean pOnPos0Edge = p0 < p1;
			p.addOutlinePoint(pos.get(0));
			p.addOutlinePoint(pos.get(1));
			p.addOutlinePoint(neg.get(0));
			q.addOutlinePoint(neg.get(0));
			if(pOnPos0Edge)
			{
				q.addOutlinePoint(pos.get(1));
			}
			else
			{
				
				q.addOutlinePoint(pos.get(0));
			}
		}
		else
		{
			double n0 = Math.abs(Util.distance(new DTSweepConstraint(neg.get(0), pos.get(0)),chordalEdge.p));
			double n1 = Math.abs(Util.distance(new DTSweepConstraint(neg.get(1), pos.get(0)),chordalEdge.p));
			boolean pOnNeg0Edge = n0 < n1;
			p.addOutlinePoint(neg.get(0));
			p.addOutlinePoint(neg.get(1));
			p.addOutlinePoint(pos.get(0));
			q.addOutlinePoint(pos.get(0));
			if(pOnNeg0Edge)
			{
				q.addOutlinePoint(neg.get(1));
			}
			else
			{
				q.addOutlinePoint(neg.get(0));
			}
		}
	}