自己对QLineF::angle()的理解

在qt的文档中,提到 The angles are measured counter-clockwise from a point on the x-axis to the right of the origin (x > 0)。

角度以逆时针为正方向测量(The angles are measured counter-clockwise),从X负半轴开始测量(from a point on the x-axis to the right of the origin (x > 0) 从X正半轴某点到原点,也就是X的负方向)。考虑如下线段:

QLineF(P1,P2).angle()的结果等于X负方向,沿逆时针旋转,直到与线段P2->P1(注意是从P2指向P1)平行,转过的角度。下面通过如下代码证实这个说法:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QPoint pnt1, pnt2;
    pnt1.setX(ui->sb_1X->value());
    pnt1.setY(ui->sb_1Y->value());

    pnt2.setX(ui->sb_2X->value());
    pnt2.setY(ui->sb_2Y->value());

    ui->doubleSpinBox->setValue(QLineF(pnt1, pnt2).angle());
}

3个示例:

 

第一个例子,P2是(1,0),P1是原点,此时P2到P1时沿着X负方向的。所以角度为0.

第二个例子,P1是(1,0),P2是原点,此时P2到P1时沿着X+方向的。所以角度为180

第3个示例,P1(0,0),P2是(0,1),此时P2到P1沿着Y轴负方向,也就是向上(QWidget认为Y方向指向下方)。所以从X轴负方向逆时针旋转270度才能与\overrightarrow{P2P1}平行

扫描二维码关注公众号,回复: 9196453 查看本文章
发布了148 篇原创文章 · 获赞 46 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/liji_digital/article/details/104134015
今日推荐