78 lines
2.0 KiB
C++
78 lines
2.0 KiB
C++
/*
|
|
QGLView
|
|
Copyright (C) 2017 Ivan Pelipenko peri4ko@yandex.ru
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef GLPRIMITIVE_CUBE_H
|
|
#define GLPRIMITIVE_CUBE_H
|
|
|
|
#include "globject.h"
|
|
|
|
|
|
class GLPrimitivePoint: public GLObjectBase
|
|
{
|
|
public:
|
|
GLPrimitivePoint(double size = 1., QVector3D pos = QVector3D()) {sz = 8.;}
|
|
virtual void draw(QGLShaderProgram * prog, bool simplest = false);
|
|
private:
|
|
double sz;
|
|
};
|
|
|
|
|
|
|
|
|
|
class GLPrimitiveLine: public GLObjectBase
|
|
{
|
|
public:
|
|
GLPrimitiveLine(QVector3D p0_ = QVector3D(), QVector3D p1_ = QVector3D()) {p0 = p0_; p1 = p1_;}
|
|
virtual void draw(QGLShaderProgram * prog, bool simplest = false);
|
|
QVector3D point0() const {return p0;}
|
|
QVector3D point1() const {return p1;}
|
|
void setPoint0(const QVector3D & p) {p0 = p;}
|
|
void setPoint1(const QVector3D & p) {p1 = p;}
|
|
private:
|
|
QVector3D p0, p1;
|
|
};
|
|
|
|
|
|
|
|
|
|
class GLPrimitiveCube: public GLObjectBase
|
|
{
|
|
public:
|
|
GLPrimitiveCube(double width = 1., double length = 1., double height = 1., QVector3D pos = QVector3D());
|
|
virtual void init();
|
|
private:
|
|
double w, l, h;
|
|
};
|
|
|
|
|
|
|
|
|
|
class GLPrimitiveEllipsoid: public GLObjectBase
|
|
{
|
|
public:
|
|
GLPrimitiveEllipsoid(double width = 1., double length = 1., double height = 1., int seg_wl = 10, int seg_h = 10, QVector3D pos = QVector3D());
|
|
virtual void init();
|
|
private:
|
|
void putTriangle(const QVector3D & v0, const QVector3D & v1, const QVector3D & v2);
|
|
double w, l, h;
|
|
int swl, sh;
|
|
};
|
|
|
|
|
|
#endif // GLPRIMITIVE_CUBE_H
|