Zhivko Kabaivanov Ответов: 3

Как рассчитать угол поворота по координатам XY?


Я создаю метод обработки изображений для вычисления угла поворота. Я сделал еще один для получения координат X и Y каждого пограничного пикселя.
Мне нужны указания, с чего начать.
Изображение пример
Я хочу узнать углы вопросительного знака изображения, чтобы вычислить его, но пока ничего не могу понять.
Какой-нибудь код будет очень кстати.

3 Ответов

Рейтинг:
21

CPallini

Предположим, что у вас есть

     -------------------------------------

|                     P2={X2,Y2}
|                   /
|                  /
|                 /
|                /
|               /
|              /  alpha
|             / .............
|              P1={X1,Y1}
|


Затем math.atan2(Y2-Y1,X2-X1) дает вам возможность alpha угол. Все остальные затем просто вычисляются.


Sergey Alexandrovich Kryukov

5ед. :-)
—СА

Рейтинг:
2

SRD14

This works perfectly for me

const double Rad2Deg = 180.0 / Math.PI;
const double Deg2Rad = Math.PI / 180.0;

/// <summary>
/// Calculates angle in radians between two points and x-axis.
/// </summary>
private double Angle(Point start, Point end)
{
    return Math.Atan2(start.Y - end.Y, end.X - start.X) * Rad2Deg;
}


Richard Deeming

С помощью Atan2 это уже было объяснено в решении 1 еще в 2014 году.

И ваш метод не соответствует собственным комментариям. В комментариях утверждается, что возвращаемое значение выражено в радианах, но возвращаемое значение - в градусах.

Рейтинг:
0

OriginalGriff

Если у вас есть X и Y каждой границы, то у вас есть X и Y каждой из четырех линий, составляющих квадрат.

Так что вычислить угол легко: школьная геометрия.
Возьмите один из углов - верхний правый в вашем примере.
Вы знаете координаты линии, которая является частью квадрата: P1 и P2, поэтому вы знаете разницу в координатах X: P2.X - P1.X
Это позволяет сделать прямоугольный треугольник, где вы знаете гипотенузу (от Пифагора на P1 и P2) и длины соседних линий ( разница в координатах X).
Таким образом, вы можете просто решить угол:

Тета = Cos-1(Ч)

Ты все это обсуждал на уроке математики, когда тебе было сколько? 12? :смех:


Zhivko Kabaivanov

Нет, мне 24 года.

OriginalGriff

Я не говорил, что это не так: я сказал, что они научили тебя этому 12 лет назад, когда тебе было 12 лет! :смех:

Zhivko Kabaivanov

АРК Кос в 5-м классе, ты серьезно ?!

OriginalGriff

Вы хотите сказать, что не поняли этого?
Чему же тебя учат в наши дни? :смеяться:

Zhivko Kabaivanov

http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=http%3A%2F%2Fwww.bgtest.eu%2F%3Ff%3Dtest%26test_id%3D46

Это тест для учеников 5-го класса.