Projekt

Obecné

Profil

Stáhnout (2.22 KB) Statistiky
| Větev: | Tag: | Revize:
1 c137512e Oto Šťáva
#include "arrow.hpp"
2
3
const float Arrow::QUAD_HEIGHT = 0.7f;
4
const float Arrow::QUAD_WIDTH = 0.1f;
5
const float Arrow::ARROW_TOP = 0.8f;
6
const float Arrow::ROOF_WIDTH = 0.2f;
7
8
Arrow::Arrow(bool important): Element(important ? Element::ARROW : Element::ARROW_SPECIAL)
9
{
10
    // Body pro kvadr tvorici zaklad sipky.
11
    
12
    float halfQuadWidth = QUAD_WIDTH / 2.0f;
13
    
14
    QVector3D quadF0 = QVector3D(-1.0f * halfQuadWidth, 0.0f, halfQuadWidth);
15
    QVector3D quadF1 = QVector3D(-1.0f * halfQuadWidth, QUAD_HEIGHT, halfQuadWidth);
16
    QVector3D quadF2 = QVector3D(halfQuadWidth, QUAD_HEIGHT, halfQuadWidth);
17
    QVector3D quadF3 = QVector3D(halfQuadWidth, 0.0f, halfQuadWidth);
18
    
19
    QVector3D quadB0 = QVector3D(-1.0f * halfQuadWidth, 0.0f, -1.0f * halfQuadWidth);
20
    QVector3D quadB1 = QVector3D(-1.0f * halfQuadWidth, QUAD_HEIGHT, -1.0f * halfQuadWidth);
21
    QVector3D quadB2 = QVector3D(halfQuadWidth, QUAD_HEIGHT, -1.0f * halfQuadWidth);
22
    QVector3D quadB3 = QVector3D(halfQuadWidth, 0.0f, -1.0f * halfQuadWidth);
23
    
24
    // Body pro "strechu" sipky.
25
    
26
    float halfRoofWidth = ROOF_WIDTH / 2.0f;
27
    
28
    QVector3D roofF0 = QVector3D(-1.0f * halfRoofWidth, QUAD_HEIGHT, halfRoofWidth);
29
    QVector3D roofB0 = QVector3D(-1.0f * halfRoofWidth, QUAD_HEIGHT, -1.0f * halfRoofWidth);
30
    QVector3D roofB1 = QVector3D(halfRoofWidth, QUAD_HEIGHT, -1.0f * halfRoofWidth);
31
    QVector3D roofF1 = QVector3D(halfRoofWidth, QUAD_HEIGHT, halfRoofWidth);
32
    QVector3D roofTop = QVector3D(0.0f, ARROW_TOP, 0.0f);
33
    
34
    // Vytvoreni kvadru.
35
    
36
    addTetragon(quadB0, quadF0, quadF3, quadB3); // Spodni krytka.
37
    addTetragon(quadF0, quadF1, quadF2, quadF3); // Obdelnik vpredu.
38
    addTetragon(quadB0, quadB1, quadF1, quadF0); // Obdelnik zleva.
39
    addTetragon(quadB3, quadB2, quadB1, quadB0); // Obdelnik vzadu.
40
    addTetragon(quadF3, quadF2, quadB2, quadB3); // Obdelnik zprava.
41
    
42
    // Vytvoreni strisky.
43
    
44
    addTetragon(roofB0, roofF0, roofF1, roofB1); // Zaklad strechy (horni krytka kvadru).
45
    addTriangle(roofF1, roofTop, roofF0); // Trojuhelnik vpredu.
46
    addTriangle(roofF0, roofTop, roofB0); // Trojuhelnik zleva.
47
    addTriangle(roofB0, roofTop, roofB1); // Trojuhelnik vzadu.
48
    addTriangle(roofB1, roofTop, roofF1); // Trojuhelnik zprava.
49
}