Как реализовать правильный поворот линий в 360 градусов? - C#

Узнай цену своей работы

Формулировка задачи:

        double Cos(double d) {
            return Math.Cos(d);
        }
 
        double Sin(double d) {
            return Math.Sin(d);
        }
 
        private void DrawLines()
        {
            var a = 270+45; // Здесь поворот в градусах; if (a != 270 or a != 90) -> wrong
            var d = 26; // Это интервал прорисовки линий
 
            var ax = 0; var bx = this.ClientSize.Width; // границы прорисовки линий по x; this.ClientSize.Width = 388
            var ay = 0; var by = this.ClientSize.Height; // границы прорисовки линий по y; this.ClientSize.Height = 388
 
            _Graphix = Graphics.FromHwnd(this.Handle);
 
            for (var x = ax+d; x < bx; x += d) { // В следующих 4 строках неправильный расчёт :\
                var vx = x-bx*Cos(a*3.14159265/180.0);
                var vy = ay;
                var dx = x+bx*Cos(a*3.14159265/180.0);
                var dy = by;
 
                _Graphix.DrawLine(new Pen(Color.DarkRed,2),(int)vx,(int)vy,(int)dx,(int)dy); // здесь рисуем линию согласно координатам vx,vy,dx,dy
            }
        }
Снизу мой проект. Помогите, пожалуйста, не справляюсь уже 2 сутки.

Решение задачи: «Как реализовать правильный поворот линий в 360 градусов?»

textual
Листинг программы
void DrawLine(Graphics graphics, Color color, float width, float radius, float angle)
{
    using (var pen = new Pen(color, width))
    {
        float anglePi = (float)(angle * Math.PI / 180.0);                 
 
        var x = radius - radius * (float)Math.Cos(anglePi);
        var y = radius - radius * (float)Math.Sin(anglePi);
 
        graphics.DrawLine(pen, radius, radius, x, y);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы