public void layout(double r, double midTheta, double span)
	{
		//Is distance from a corner of the alloted space of a vertex to the center.
		double diagonalLength = Math.sqrt(Math.pow(vertexDim.getHeight(), 2) + Math.pow(vertexDim.getWidth(), 2))
										  + vertexBuffer;	

		if (size() == 0)
			return;
		if (size() == 1) {
			if (r==0)
				graph.moveVertex(vertices.get(0), new Point2D.Double(0, 0));
			else
				graph.moveVertex(vertices.get(0), new Point2D.Double(r+diagonalLength, midTheta));
			return;
		}
		
		double startTheta, thetaDivision;
		int divisions;
		startTheta = midTheta - span / 2;			
				
		if (2* Math.PI - span < .0001) //aka if it's a circle
			divisions = size();		
		else
			divisions = size() - 1;
		thetaDivision = span / divisions;				
		
		//radius = circumference / 2pi = (diagonalLength * (2pi / thetaDivision)) / 2pi = diagonalLength / thetaDivision	
		radius = diagonalLength / thetaDivision;
		
		//If starting radius + diagonallength > R, we want to use that as the radius from the center of
		//the graph instead.
		if (radius < r + diagonalLength)
			radius = r + diagonalLength;
		
		for (int i=0; i<size(); i++)
			graph.moveVertex(get(i), new Point2D.Double(radius, startTheta + thetaDivision * i));
	}