Code_TYMPAN  4.4.0
Industrial site acoustic simulation
OGLBoxMesh.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012-2024> <EDF-DTG> <FRANCE>
3  * This file is part of Code_TYMPAN (R).
4  * Code_TYMPAN (R) is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * Code_TYMPAN (R) is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  * You should have received a copy of the GNU General Public License along
13  * with Code_TYMPAN (R). If not, see <https://www.gnu.org/licenses/>.
14  */
15 
16 #include "OGLBoxMesh.h"
17 #include "gui/tools/OGLMesh.h"
19 #include "models/common/3d.h"
20 #include <qvector3d.h>
21 
22 OGLBoxMesh::OGLBoxMesh(const QVector3D& dimensions)
23 {
26 }
27 
28 void OGLBoxMesh::setDimensions(const QVector3D& dimensions)
29 {
31  QVector3D halfDimensions = dimensions / 2;
32 
33  // 8 corners of the box
34  _vertices = {
35  QVector3D(1, -1, -1) * halfDimensions, // 0
36  QVector3D(-1, -1, -1) * halfDimensions, // 1
37  QVector3D(-1, 1, -1) * halfDimensions, // 2
38  QVector3D(1, 1, -1) * halfDimensions, // 3
39  QVector3D(1, -1, 1) * halfDimensions, // 4
40  QVector3D(-1, -1, 1) * halfDimensions, // 5
41  QVector3D(-1, 1, 1) * halfDimensions, // 6
42  QVector3D(1, 1, 1) * halfDimensions, // 7
43  };
44 
45  // Line indices to draw the box edges
46  _indices = {
47  0, 1, 1, 2, 2, 3, 3, 0, // bottom face
48  4, 5, 5, 6, 6, 7, 7, 4, // top face
49  0, 4, 1, 5, 2, 6, 3, 7 // vertical edges
50  };
51  // compute boundingBox
53 }
54 
55 const QVector3D& OGLBoxMesh::dimensions() const
56 {
57  return _dimensions;
58 }
All base classes related to 3D manipulation.
const QVector3D & dimensions() const
Definition: OGLBoxMesh.cpp:55
OGLBoxMesh(const QVector3D &dimensions)
Definition: OGLBoxMesh.cpp:22
void setDimensions(const QVector3D &dimensions)
Definition: OGLBoxMesh.cpp:28
QVector3D _dimensions
Definition: OGLBoxMesh.h:42
std::vector< QVector3D > _vertices
Definition: OGLMesh.h:101
OGLPrivimitiveType _primitiveType
Definition: OGLMesh.h:107
std::vector< unsigned int > _indices
Definition: OGLMesh.h:105
void recomputeBoundingBox()
Definition: OGLMesh.cpp:59