Qt中位置和角度的二维图
2D plot of position and angle in Qt
我已经为汽车制作了一个控制器,目前正在尝试在 Qt 中为该控制器制作一个 GUI。
我现在唯一缺少的是汽车相对于起点的位置和角度的可视化。
我想做这样的东西:
圆圈代表汽车,圆圈代表汽车heading/angle。
一个额外的奖励功能是在它移动时对其路径有淡淡的痕迹,但如果我掌握了基础知识,我应该能够自己解决这个问题。
我已尝试查看一些情节示例,但无法推断出解决问题所需的条件。
你建议如何实施这样的事情?
:
I have all the measurements
所以让我们假设您有 Euler angles 这样您就可以过滤掉 roll 的变化而只考虑 φ 的变化。
为此,您需要扩展一个 QWidget
添加一个成员 φ,我们将其命名为:m_phi
。我们还需要将您的 QPixMap
添加为成员,我们将其称为 m_px
。你将覆盖 QWidget::paintEvent
.
paintEvent(qPaintEvent* /*event*/) {
if(!m_px.isNull()) {
QPainter* p;
p.setRenderHint(QPainter::Antialiasing);
p.translate(width() / 2.0, height() / 2.0);
p.save();
p.rotate(m_phi);
QRect r = m_px.rect();
r.moveCenter(QPoint());
p.drawPixmap(r, m_px);
p.restore();
}
}
我已经为汽车制作了一个控制器,目前正在尝试在 Qt 中为该控制器制作一个 GUI。 我现在唯一缺少的是汽车相对于起点的位置和角度的可视化。
我想做这样的东西:
圆圈代表汽车,圆圈代表汽车heading/angle。
一个额外的奖励功能是在它移动时对其路径有淡淡的痕迹,但如果我掌握了基础知识,我应该能够自己解决这个问题。
我已尝试查看一些情节示例,但无法推断出解决问题所需的条件。
你建议如何实施这样的事情?
I have all the measurements
所以让我们假设您有 Euler angles 这样您就可以过滤掉 roll 的变化而只考虑 φ 的变化。
为此,您需要扩展一个 QWidget
添加一个成员 φ,我们将其命名为:m_phi
。我们还需要将您的 QPixMap
添加为成员,我们将其称为 m_px
。你将覆盖 QWidget::paintEvent
.
paintEvent(qPaintEvent* /*event*/) {
if(!m_px.isNull()) {
QPainter* p;
p.setRenderHint(QPainter::Antialiasing);
p.translate(width() / 2.0, height() / 2.0);
p.save();
p.rotate(m_phi);
QRect r = m_px.rect();
r.moveCenter(QPoint());
p.drawPixmap(r, m_px);
p.restore();
}
}