Можно получить список вершин по
формулам и по очереди их соеденить. В этом случае линии пересекаться гарантировано не будут.
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: стало интересно, решил немного порисовать. Получаются примерно такие картинки
По вашему комменту я так и не понял, что именно вы хотите сделать, но если интересно, можете глянуть код:
архив с проектом (код лепил по мере появления идей, поэтому имеется некоторая каша; если что будет непонятно - спрашивайте).