3

我有一个坐标和一个角度。现在我想用指定的角度从坐标到一定长度画一条线。我怎样才能做到这一点?有人可以给出任何想法吗?

4

2 回答 2

11

Arthur 计算角度的方法是正确的,但实际上,QT 提供了以特定角度绘制线条的内置方法,特别是在header中的QLineF类的函数:QLineF

#include <QLineF>

void AngleDemo::paintEvent(QPaintEvent *)
{
  QPainter painter(this);

  painter.setPen(QPen(Qt::black,1));

  /* Create the line object: */
  QLineF angleline;

  /* Set the origin: */
  angleline.setP1(QPointF(80,80));

  /* Set the angle and length: */
  angleline.setAngle(45);
  angleline.setLength(50);

  /* Draw the line: */
  painter.drawLine(angleline);
}

函数的在线文档setAngle()

将线的角度设置为给定的角度(以度为单位)。这将改变线的第二个点的位置,使线具有给定的角度。

角度的正值表示逆时针方向,而负值表示顺时针方向。

零度位于 3 点钟位置。

这个函数是在 Qt 4.4 中引入的。

于 2013-05-21T06:34:50.647 回答
3

假设您的坐标由xy

double endx = cos(angle)*length;
double endy = sin(angle)*length;

您的线路将从 (x,y) 变为 (x+endx, y+endy)。

不要忘记您angle需要以弧度表示,因此如果您以度为单位,例如 0 到 360,请像这样转换它,并使用上面的弧度:

double pi = acos(-1);
double radians = angle / 180.0 * pi;
于 2013-05-21T05:30:00.357 回答