Как реализовать правильный поворот линий в 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 } }
Решение задачи: «Как реализовать правильный поворот линий в 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д