diff options
Diffstat (limited to 'pose-widget/glwidget.h')
| -rw-r--r-- | pose-widget/glwidget.h | 90 | 
1 files changed, 90 insertions, 0 deletions
| diff --git a/pose-widget/glwidget.h b/pose-widget/glwidget.h new file mode 100644 index 00000000..43a0f853 --- /dev/null +++ b/pose-widget/glwidget.h @@ -0,0 +1,90 @@ +/* Copyright (c) 2013 Stanislaw Halik <sthalik@misaki.pl> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + */ + +#pragma once + +#include <QWidget> +#include <QPixmap> +#include "opentrack/plugin-api.hpp" + +struct Point { +    Point(int x, int y) : +            x(x), y(y) +    { +    } +    Point() : +            x(0), y(0) +    { +    } +    int x, y; +}; + +struct Vec3f { +    double x, y, z; +    Vec3f(double x, double y, double z) : +            x(x), y(y), z(z) +    { +    } +    Vec3f() : +            x(0), y(0), z(0) +    { +    } +}; + +struct Vec2f { +    double x, y; +    Vec2f(double x, double y) : +            x(x), y(y) +    { +    } +    Vec2f() : +            x(0), y(0) +    { +    } +}; + +class GLWidget : public QWidget +{ +public: +    GLWidget(QWidget *parent); +    ~GLWidget(); +    void rotateBy(double xAngle, double yAngle, double zAngle); +protected: +    void paintEvent ( QPaintEvent * event ) override; +private: +    Point project(const Vec3f& point) { +        Point rect; + +        rect.x = point.x * matrix[0] +                 + point.y * matrix[1] +                 + point.z * matrix[2]; +        rect.y = point.x * matrix[3] +                 + point.y * matrix[4] +                 + point.z * matrix[5]; + +        return rect; +    } +    Vec3f project2(const Vec3f& point) { +        Vec3f rect; + +        rect.x = point.x * matrix[0] +                 + point.y * matrix[1] +                 + point.z * matrix[2]; +        rect.y = point.x * matrix[3] +                 + point.y * matrix[4] +                 + point.z * matrix[5]; +        rect.z = point.x * matrix[6] +                 + point.y * matrix[7] +                 + point.z * matrix[8]; +        return rect; +    } +    void project_quad_texture(); +    double matrix[9]; +    QImage front; +    QImage back; +    QImage texture; +}; | 
