Как нарисовать правильный многоугольник С#?

Всем привет, возникла необходимость написать функцию, которая рисует правильный многоугольник вписанный в окружность. Функция принимает число вершин(от 3 и до бесконечночти, + радиус описанной вокруг многоугольника окружности). Можно использовать только стандартные компоненты, т.е рисовать на PictureBox с использованием класса Graphics. Пока не могу придумать универсального способа для n-угольника.
  • Вопрос задан
  • 9093 просмотра
Решения вопроса 1
Мой вариант
private void Form1_Paint(object sender, PaintEventArgs e) {
  DrawRegularPolygon(new PointF(100, 100), 10, 100, e.Graphics);
}

private static void DrawRegularPolygon(PointF center, // Координаты центра окружности
   int vertexes, // Количество вершин
   float radius, // Радиус
   Graphics graphics) {
  var angle = Math.PI*2/vertexes;

  var points = Enumerable.Range(0, vertexes)
        .Select(i => PointF.Add(center, new SizeF((float) Math.Sin(i*angle)*radius, (float) Math.Cos(i*angle)*radius)));

   graphics.DrawPolygon(Pens.Black, points.ToArray());
   graphics.DrawEllipse(Pens.Aqua, new RectangleF(PointF.Subtract(center, new SizeF(radius, radius)), new SizeF(radius * 2, radius * 2)));
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Igor_Sib
Чтобы получить вершины - от начальной точки откладываешь отрезок радиусом R, скажем вправо - это первая вершина, потом поворачиваешь на угол (360/N, где N - число углов), получаешь координаты второй вершины, потом поворачиваешь ещё на столько же - получаешь координаты третьей, и т.д. Я бы сделал так.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы