Audes
@Audes

Разделить окружность на равные части?

День добрый. Банальная задача: нужно нарисовать отрезки из центра окружности, причем расстояние между ними должно быть одинаково, сколько бы их не было. Ломаю голову, да все никак не пойму. Скрин и код прилагаются.
//в теле ф-ии рисования
float div = 360f / items.Count;
            PointF pt1 = new PointF(W / 2f, H / 2f);
            Bitmap bmp = new Bitmap(W, H);
            Graphics g = Graphics.FromImage(bmp);
            g.Clear(Color.White);
            for (int i=0;i<items.Count;i++)
            {
                g.DrawLine(Pens.Black, pt1, PolarProjection(pt1, 250f, div * i));
                g.DrawString($"{div * i}", Font, Brushes.Red, PolarProjection(pt1, 250f, div * i)); //debug
            }

//ф-ия перевода координат с Декартовых в полярные
        PointF PolarProjection(PointF pt, float dist, float angle)
        {
            return new PointF(pt.X + (float)Math.Cos(angle) * dist, pt.Y + (float)Math.Sin(angle) * dist);
        }

5ad3c1af532645b7987eb5375ad5438e.jpeg
  • Вопрос задан
  • 396 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Math.Cos и Math.Sin принимают угол не в градусах, а в радианах.
Замечание - расстояние между любыми двумя отрезками на вашем рисунке - ноль, так как они все имеют общую точку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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