计算角度c ++时Atan2奇怪的输出

时间:2016-09-17 00:49:36

标签: c++ angle atan2

我正在尝试从基于象限的Point in计算角度,但是我得到了一些象限的奇怪值,并且它导致我的操作不完整。

基本上我需要知道的是具有中心点(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);

我得到了以下奇怪的输出,这些输出与获得精确角度后的Ill做的事情有关。

enter image description here

你们能告诉我这里有什么问题吗?

编辑:

    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 个答案:

没有答案