Как реализовать правильный поворот линий в 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);
}
}