Atan2 странный вывод при расчете углов Stack Overflow

Я пытаюсь вычислить угол от точки, основанной на квадранте, но я получаю странные значения для некоторых квадрантов, и это приводит к неполной операции для меня.

По сути, мне нужно знать, под каким углом находится объект, имеющий центральную точку (x1, y1). От второго объекта, который имеет центральную точку (x2, y2), который считается центром квадранта. x2, y2 никогда не будет 0,0. Потому что в какой-то позиции на экране.

Итак, я делаю следующий код:

int y = point.center().y - quadrant.center().y;
int x = point.center().x - quadrant.center().x;
float angle = std::atan2(y, x) * 180/acos(-1);
//this was my try to fix the strange values that the code above is giving, but no sucess
float angle = std::atan2(y < 0 ? -y : y, x < 0 ? -x : x) * * 180/acos(-1);

Я получаю следующие странные выводы, которые не соответствуют тому, что я сделаю после получения точного угла.

введите описание изображения здесь

Ребята, вы можете показать мне, что здесь не так?

РЕДАКТИРОВАТЬ:

    int y = point.center().y - source.rect.center().y;
int x = point.center().x - source.rect.center().x;
float angle = std::atan2(y, x) * RAD_TO_DEC;
Point ponta;
Point raio = Point(source.rect.bottomRight().x - source.center.x,   source.rect.bottomCenter().y - source.center.y);
if (angle >= 0.0f && angle <= 90.0f) {
//right bottom
ponta = point.bottomRight();
raio = Point(source.rect.bottomRight().x, source.rect.bottomCenter().y);
g_logger.info(stdext::format("Radius: y%d x%d, ponta x%d %y, x%d y%d - angulo: %f", raio.x ,raio.y, ponta.x, ponta.y, x, y, angle));
if (ponta.x <= raio.x && ponta.y <= raio.y && ponta.x) {
return true;
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector