Как попарно соединить вершины многоугольника, что бы линии не пересекались?
Можно получить список вершин по формулам и по очереди их соеденить. В этом случае линии пересекаться гарантировано не будут.IEnumerable<Point> GetPoints(int points) // points - количество вершин
{
    return Enumerable.Range(0, points)
        .Select(i => 2 * i * Math.PI / points)
        .Select(arg => new Point
        {
            X = Math.Cos(arg), 
            Y = Math.Sin(arg)
        });
}

struct Point
{
    public double X;
    public double Y;
}
UPD: стало интересно, решил немного порисовать. Получаются примерно такие картинки 
По вашему комменту я так и не понял, что именно вы хотите сделать, но если интересно, можете глянуть код: архив с проектом (код лепил по мере появления идей, поэтому имеется некоторая каша; если что будет непонятно - спрашивайте).
Вам интересно как это нарисовать или как получить геометрически? Если второе, опишите подробнее в чем задача: что дано и что должно быть на выходе.