qwt中的魔术数字

时间:2012-03-29 14:24:56

标签: c++ qt qwt

Qwt似乎使用了很多神奇的数字。任何人都可以解释以下代码中的90和16

void QwtRoundScaleDraw::drawBackbone( QPainter *painter ) const
{
    const double a1 = qMin( scaleMap().p1(), scaleMap().p2() ) - 90 * 16;
    const double a2 = qMax( scaleMap().p1(), scaleMap().p2() ) - 90 * 16;

    const double radius = d_data->radius;
    const double x = d_data->center.x() - radius;
    const double y = d_data->center.y() - radius;

    painter->drawArc( x, y, 2 * radius, 2 * radius,
        -a2, a2 - a1 + 1 );          // counterclockwise
}

1 个答案:

答案 0 :(得分:5)

解决问题的步骤:

  1. Doc of drawArc
  2. a1和a2用于计算该函数的startAngle和spanAngle参数
  3. 这些参数的度量是度数的1/16(见#1)
  4. 您可以猜测这些数字会使用象限(90度)旋转原始弧