我有一个坐标和一个角度。现在我想从坐标中绘制一条直线到指定角度的一定长度。我怎么能实现这个?有人可以提出任何想法吗?
答案 0 :(得分:8)
Arthur计算角度的方法是正确的,但实际上,QT提供了以特定角度绘制线条的内置方法,特别是QLineF
标题中QLineF
类的功能: / p>
#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);
}
来自online documentation of the setAngle()
function:
将线条的角度设置为给定角度(以度为单位)。这将改变线的第二个点的位置,使得线具有给定的角度。
角度的正值表示逆时针,而负值表示顺时针方向。
零度位于3点位置。
此功能在Qt 4.4中引入。
答案 1 :(得分:3)
假设您的坐标由x
和y
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;