-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcena.hpp
179 lines (153 loc) · 4.37 KB
/
cena.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/**
* \file cena.hpp
*
* \brief Este arquivo e um pacote que contem as definicoes que deverao ser apresentados na íntegra no arquivo cena.cpp, sendo este responsavel pelas
* definicoes da cena. Foi utilizado o texto [introducao ao ray tracing] como base para a implementacao do arquivo. Link [http://www.cplusplus.com/reference/list/list/size/]
* [Texto de introducao ao ray tracing]: www.visgraf.impa.br/Data/RefBib/PS_PDF/silva94/rt.pdf "introducao ao ray tracing"
*
* \author
* Petrucio Ricardo Tavares de Medeiros \n
* Universidade Federal do Rio Grande do Norte \n
* Departamento de Computacao e Automacao Industrial \n
* petrucior at gmail (dot) com
*
* \version 0.1
* \date Outubro 2013
*/
#ifndef _CENA_HPP
#define _CENA_HPP
#include "objeto.hpp" //rayTracing::Objeto
#include <iostream> //std
#include <list> //list
//#include "ImageClass.h"
/**
* \defgroup RayTracingNameSpace Namespace rayTracing.
* @{
*/
/**
* \namespace rayTracing
*
* \brief O espaco de nomes rayTracing contem todas os arquivos que sao utilizados para sua implementacao.
*/
namespace rayTracing{
/**
* \class Cena
*
* \brief Define as características dos objetos.
*/
class Cena{
//------------------------------
// Atributos privados
//------------------------------
private:
std::list<Objeto*> obj; ///< Pilha de objetos
//Definindo cor do background
double background_r; ///< cor r do background
double background_g; ///< cor g do background
double background_b; ///< cor b do background
//Constante ambiente
double ka; ///< constante do ambiente
//Tamanho da imagem
int n; ///< Numero de linhas da imagem
int m; ///< Numero de colunas da imagem
//Criando uma imagem para background
//ImageClass* background = new ImageClass(n, m);
//------------------------------
// Metodos publicos
//------------------------------
public:
/**
* \fn Cena();
*
* \brief Construtor da classe.
*/
Cena();
/**
* \fn void atualizar_cor_background(double r, double g, double b);
*
* \brief Atualiza as cores de background.
*
* \param r - contribuicao red para o background
* \param g - contribuicao green para o background
* \param b - contribuicao blue para o background
*/
void atualizar_cor_background(double r, double g, double b);
/**
* \fn double cor_background_r();
*
* \brief Retorna a contribuicao red para a cor de background.
*/
double cor_background_r();
/**
* \fn double cor_background_g();
*
* \brief Retorna a contribuicao green para a cor de background.
*/
double cor_background_g();
/**
* \fn double cor_background_b();
*
* \brief Retorna a contribuicao blue para a cor de background.
*/
double cor_background_b();
/**
* \fn void incluir_objetos_pilha(Objeto* o);
*
* \brief Inclue um objeto na pilha.
*
* \param o - ponteiro para o objeto que devera ser colocado na pilha
*/
void incluir_objetos_pilha(Objeto* o);
/**
* \fn Objeto* excluir_objetos_pilha();
*
* \brief Exclue um objeto na pilha.
*/
Objeto* excluir_objetos_pilha();
/**
* \fn int size_objetos_pilha();
*
* \brief calcula quantos objetos tem na pilha e que constitue minha cena.
*
* \return A quantidade objetos na pilha
*/
int size_objetos_pilha();
/**
* \fn void atualizar_ka(double _ka);
*
* \brief Atualizando o valor de _ka.
*
* \param _ka - constante do ambiente
*/
void atualizar_ka(double _ka);
/**
* \fn double ka_ambiente();
*
* \brief Retornando o valor da constante do ambiente
*/
double ka_ambiente();
/**
* \fn void dimensao_imagem(int lado, int altura);
*
* \brief Atualizando as dimensoes da imagem
*
* \param lado - dimensao do lado da imagem
* \param altura - dimensao da altura da imagem
*/
void dimensao_imagem(int lado, int altura);
/**
* \fn int lado();
*
* \brief Retornando o valor do lado da imagem.
*/
int lado();
/**
* \fn int altura();
*
* \brief Retornando o valor da altura da imagem.
*/
int altura();
};
} ////Fim do namespace rayTracing
/** @} */ //Fim do grupo class
#endif