InVoxel() for all Primitives, including fix for Triangle::CalcBounds()
[MicroTrace.git] / Ray.cxx
diff --git a/Ray.cxx b/Ray.cxx
index 584db26..84617d1 100644 (file)
--- a/Ray.cxx
+++ b/Ray.cxx
@@ -2,23 +2,24 @@
 
 #include "Ray.hxx"
 
-#define MAX_RECURSION_DEPTH 5
-
 Ray::Ray()
   : m_org(Vec3f()),
     m_dir(Vec3f()),
-    m_hit(0),
-    m_level(MAX_RECURSION_DEPTH)
+    m_level(0),
+    m_density(1.0),
+    m_hit(0)
 {
   m_t = std::numeric_limits<float>::max();
 }
 
-Ray::Ray(const Vec3f& org,
-        const Vec3f& dir)
+Ray::Ray(const Vec3f& org, 
+        const Vec3f& dir,
+        unsigned int recursion_level)
   : m_org(org),
     m_dir(dir),
-    m_hit(0),
-    m_level(MAX_RECURSION_DEPTH)
+    m_level(recursion_level),
+    m_density(1.0),
+    m_hit(0)
 {
   m_t = std::numeric_limits<float>::max();
 }
@@ -34,6 +35,7 @@ Ray::Ray(const Ray& r)
   m_t = r.m_t;
   m_hit = r.m_hit;
   m_level = r.m_level;
+  m_density = r.m_density;
 }
 
 Ray&
@@ -45,6 +47,8 @@ Ray::operator=(const Ray& r)
       m_dir = r.m_dir;
       m_t = r.m_t;
       m_hit = r.m_hit;
+      m_level = r.m_level;
+      m_density = r.m_density;
     }
   return *this;
 }
@@ -85,19 +89,19 @@ Ray::setT(float t)
   m_t = t;
 }
 
-void
-Ray::setHit(Primitive * p)
-{
-   m_hit = p;
-}
-
 Primitive*
 Ray::hit()
 {
   return m_hit;
 }
 
-unsigned int
+void
+Ray::setHit(Primitive* p)
+{
+  m_hit = p;
+}
+
+unsigned int 
 Ray::recursionDepth() const
 {
   return m_level;
@@ -108,3 +112,15 @@ Ray::setRecursionDepth(unsigned int i)
 {
   m_level = i;
 }
+
+float
+Ray::indexOfRefraction() const
+{
+  return m_density;
+}
+
+void
+Ray::setIndexOfRefraction(float d)
+{
+  m_density = d;
+}
This page took 0.029732 seconds and 4 git commands to generate.