private ArrayList<ChordalAxisPoint> growChordalAxis(ChordalAxisPoint current, DelaunayTriangle neighbour, ArrayList<ChordalAxisPoint> points)
	{
		considered.add(neighbour);
		TriangulationPoint[] midpoints = getMidPoints(neighbour);
		if(t.contains(neighbour))
		{
			TriangulationPoint point = getExternalPoint(neighbour);
			ChordalAxisPoint newPoint = new ChordalAxisPoint(point);
			current.connect(newPoint);
			points.add(newPoint);
		}
		else if(s.contains(neighbour))
		{
			ChordalAxisPoint newPoint;
			if(Util.distance(current.getPoint(), midpoints[0]) > Util.THRESHOLD)
			{
				newPoint = new ChordalAxisPoint(midpoints[0]);
			}
			else
			{
				newPoint = new ChordalAxisPoint(midpoints[1]);
			}
			current.connect(newPoint);
			points.add(newPoint);
			DelaunayTriangle[] allNeighbours = getInternalNeighbours(neighbour);
			DelaunayTriangle[] neighbours = discardConsideredNeighbours(allNeighbours);
			//We know there is only one unconsidered neighbour
			growChordalAxis(newPoint, neighbours[0],points);
		}
		else if(j.contains(neighbour))
		{
			ChordalAxisPoint center = new ChordalAxisPoint(new PolygonPoint(neighbour.centroid().getX(),neighbour.centroid().getY()));
			current.connect(center);
			points.add(center);
			DelaunayTriangle[] allNeighbours = getInternalNeighbours(neighbour);
			DelaunayTriangle[] neighbours = discardConsideredNeighbours(allNeighbours);
			int index1 = -1;
			int index2 = -1;
			for (int i = 0; i < 3; i++)
			{
				if(Util.distance(current.getPoint(), midpoints[i]) > Util.THRESHOLD)
				{
					if(index1 == -1)
						index1 = i;
					else if(index2 == -1)
						index2 = i;
				}
			}
			ChordalAxisPoint newPoint1 = new ChordalAxisPoint(midpoints[index1]);
			ChordalAxisPoint newPoint2 = new ChordalAxisPoint(midpoints[index2]);
			center.connect(newPoint1);
			center.connect(newPoint2);
			points.add(newPoint1);
			points.add(newPoint2);
			
			//We know there are two unconsidered neighbour
			
			boolean connectNeighbour1ToMidpoint1 = false;
			TriangulationPoint[] neighbour1Midpoints = getMidPoints(neighbours[0]);
			for (int i = 0; i < neighbour1Midpoints.length; i++)
			{
				if(Util.distance(newPoint1.getPoint(),neighbour1Midpoints[i]) < Util.THRESHOLD)
					connectNeighbour1ToMidpoint1 = true;
			}
			if(connectNeighbour1ToMidpoint1)
			{
				growChordalAxis(newPoint1, neighbours[0],points);
				growChordalAxis(newPoint2, neighbours[1],points);
			}
			else
			{
				growChordalAxis(newPoint1, neighbours[1],points);
				growChordalAxis(newPoint2, neighbours[0],points);
			}
		}
		return points;
	}