InVoxel() for all Primitives, including fix for Triangle::CalcBounds()
[MicroTrace.git] / Ray.cxx
diff --git a/Ray.cxx b/Ray.cxx
index 86b1294..84617d1 100644 (file)
--- a/Ray.cxx
+++ b/Ray.cxx
@@ -5,15 +5,20 @@
 Ray::Ray()
   : m_org(Vec3f()),
     m_dir(Vec3f()),
+    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_level(recursion_level),
+    m_density(1.0),
     m_hit(0)
 {
   m_t = std::numeric_limits<float>::max();
@@ -29,6 +34,8 @@ Ray::Ray(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;
 }
 
 Ray&
@@ -40,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;
 }
@@ -80,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;
@@ -103,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.025282 seconds and 4 git commands to generate.