/* QGLView Copyright (C) 2019 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 . */ #ifndef GLPRIMITIVE_CUBE_H #define GLPRIMITIVE_CUBE_H #include "gltypes.h" namespace Primitive { Mesh * plane(float width = 1., float length = 1.); Mesh * cube(float width = 1., float length = 1., float height = 1.); Mesh * ellipsoid(int segments_wl, int segments_h, float width = 1., float length = 1., float height = 1., float end_angle = 360.); Mesh * disc(int segments, float width = 1., float length = 1., float end_angle = 360.); Mesh * cone(int segments, float width = 1., float length = 1., float height = 1.); Mesh * cylinder(int segments, float width = 1., float length = 1., float height = 1., float end_angle = 360.); Mesh * arrow(int segments = 16, float thick = 0.04, float angle = 30.); // length = 1 Mesh * torus(int segments_main = 30, int segments_second = 16, float radius_main = 2.5, float radius_second = 0.5, float end_angle = 360.); Mesh * lineFrame(QVector3D p0, QVector3D p1); Mesh * cubeFrame(float width = 1., float length = 1., float height = 1.); Mesh * ellipsoidFrame(int segments_wl, int segments_h, float width = 1., float length = 1., float height = 1.); Mesh * coneFrame(int segments, float width = 1., float length = 1., float height = 1.); } /* class GLPrimitivePoint: public GLObjectBase { public: GLPrimitivePoint(double size = 1., QVector3D pos = QVector3D()) {sz = 8.;} virtual void draw(QOpenGLShaderProgram * 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(QOpenGLShaderProgram * 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 GLPrimitiveEllipsoid: public GLObjectBase { public: GLPrimitiveEllipsoid(float width = 1., float length = 1., float 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); float w, l, h; int swl, sh; }; class GLPrimitiveAxis: public GLObjectBase { public: GLPrimitiveAxis() {accept_fog = accept_light = cast_shadow = rec_shadow = select_ = false;} virtual void draw(QOpenGLShaderProgram * prog, bool simplest = false); }; */ #endif // GLPRIMITIVE_CUBE_H