added 3dengfx into the repo, probably not the correct version for this
[summerhack] / src / 3dengfx / src / n3dmath2 / n3dmath2_ray.cpp
1 /*
2 Copyright 2004 John Tsiombikas <nuclear@siggraph.org>
3
4 This file is part of the n3dmath2 library.
5
6 The n3dmath2 library is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 The n3dmath2 library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with the n3dmath2 library; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20
21 #include "n3dmath2.hpp"
22
23 using std::stack;
24
25 Ray::Ray() {
26         energy = 1.0;
27         ior = 1.0;
28 }
29
30 Ray::Ray(const Vector3 &origin, const Vector3 &dir) {
31         this->origin = origin;
32         this->dir = dir;
33         energy = 1.0;
34         ior = 1.0;
35 }
36
37 void Ray::enter(scalar_t new_ior) {
38         ior = new_ior;
39         ior_stack.push(ior);
40 }
41
42 void Ray::leave() {
43         ior_stack.pop();
44         ior = ior_stack.empty() ? 1.0 : ior_stack.top();
45 }