void DoRound(double Limit) {
			IntPoint pt1 = new IntPoint(Round(m_p.get(m_i).get(m_j).x + normals.get(m_k).X * m_delta), Round(m_p.get(m_i).get(m_j).y + normals.get(m_k).Y * m_delta));
			IntPoint pt2 = new IntPoint(Round(m_p.get(m_i).get(m_j).x + normals.get(m_j).X * m_delta), Round(m_p.get(m_i).get(m_j).y + normals.get(m_j).Y * m_delta));
			AddPoint(pt1);
			// round off reflex angles (ie > 180 deg) unless almost flat (ie < 10deg).
			// cross product normals < 0 . angle > 180 deg.
			// dot product normals == 1 . no angle
			if((normals.get(m_k).X * normals.get(m_j).Y - normals.get(m_j).X * normals.get(m_k).Y) * m_delta >= 0) {
				if((normals.get(m_j).X * normals.get(m_k).X + normals.get(m_j).Y * normals.get(m_k).Y) < 0.985) {
					double a1 = Math.atan2(normals.get(m_k).Y, normals.get(m_k).X);
					double a2 = Math.atan2(normals.get(m_j).Y, normals.get(m_j).X);
					if(m_delta > 0 && a2 < a1)
						a2 += Math.PI * 2;
					else if(m_delta < 0 && a2 > a1)
						a2 -= Math.PI * 2;
					Polygon arc = BuildArc(m_p.get(m_i).get(m_j), a1, a2, m_delta, Limit);
					for(int m = 0; m < arc.size(); m++)
						AddPoint(arc.get(m));
				}
			} else
				AddPoint(m_p.get(m_i).get(m_j));
			AddPoint(pt2);
		}