Files
qt5-legatus-legacy/Lts/Tools/Trajectories/TrajectoryWidget/trajectorywidget.h
T
2026-08-13 18:33:10 +02:00

48 lines
1.0 KiB
C++
Executable File

#pragma once
#include <QOpenGLWidget>
#include <QOpenGLFunctions>
#include <QOpenGLShaderProgram>
#include <QVector3D>
#include <QVector>
#include <QPoint>
struct Curve {
QVector<QVector3D> points;
QVector3D color;
};
class TrajectoryWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
Q_OBJECT
public:
explicit TrajectoryWidget(QWidget *parent = nullptr);
void setCurves(const QVector<Curve>& curves);
void addCurve(const Curve& curve);
void clearCurves();
protected:
void initializeGL() override;
void resizeGL(int w, int h) override;
void paintGL() override;
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void wheelEvent(QWheelEvent *event) override;
private slots:
void fitViewToCurves();
private:
QVector<Curve> m_curves;
QOpenGLShaderProgram m_program;
float m_rotX = 20.0f;
float m_rotY = -30.0f;
float m_zoom = -10.0f;
QPoint m_lastMousePos;
QVector3D m_viewCenter{0, 0, 0};
};