@Drottarutarnum
Любопытный любитель

Как повернуть линию от центра под углом?

Мне нужна стрелка (линия) которая указывает от центра pictureBox положение (от 0 до 360)

Код который сейчас у меня (не рабочий)

void Render() {
            g.Clear(Color.White);

            DraLine(30, Color.Black);

            g.Dispose();
        }


  

        private double Radian(float angle) {
            return (Math.PI / 180.0) * angle; 
        }


        void DraLine(float angle, Color color) {
            Pen pen = new Pen(color, 3);

            double length = pictureBox_motor.Size.Height / 2;
            double x = pictureBox_motor.Size.Width / 2;
            double y = pictureBox_motor.Size.Height / 2;

            var center = new Point((int)x, (int)y);



            var endPoint = new Point();
            if(angle <= 45) {
                endPoint.X = (int)x;
                endPoint.Y = (int)(x - x * Math.Tan(Radian(angle)));
            } else {
                endPoint.Y = (int)y;
                endPoint.X = (int)(x * Math.Tan(Radian(90 - angle)));
            }


            g.DrawLine(pen, center, endPoint);
        }
  • Вопрос задан
  • 212 просмотров
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
При чём здесь тангенсы?
x - через косинус, y - через синус.
И условие не нужно будет.
И умножение не на х, а на радиус

UPD: Вспоминаем уроки геометрии за 7 класс.
x1, y1 - координаты начала отрезка (центр картинки)
x2, y2 - второй конец
x2 = x1 + cos(a)*R
y2 = y1 + sin(a)*R
Ответ написан
Ваш ответ на вопрос

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

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