Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

FirstHitNN Class Reference

#include <ray.h>

Inheritance diagram for FirstHitNN:

Ray List of all members.

Public Methods

 FirstHitNN ()
bool SetTreshold (int treshold)
virtual bool CastNext ()

Protected Attributes

int m_treshold

Constructor & Destructor Documentation

FirstHitNN::FirstHitNN   [inline]
 

Definition at line 82 of file ray.h.

00082 {m_treshold = 0.0;};


Member Function Documentation

bool FirstHitNN::CastNext   [virtual]
 

Reimplemented from Ray.

Definition at line 295 of file ray.cpp.

References Data::GetDensity(), Transfunc::GetDensityColor(), Transfunc::GetOpacity(), VECTOR::length(), Ray::Lighting(), Ray::m_alpha, Ray::m_backgroundcolor, Ray::m_currentcolor, Ray::m_currentpos, Ray::m_data, Ray::m_direction, Ray::m_radius, Ray::m_startpoint, Ray::m_steplength, Ray::m_tf, m_treshold, Ray::mx, Ray::my, Ray::mz, ROUND, VECTOR::x, VECTOR::y, and VECTOR::z.

00295                      {
00296         
00297         if(m_data == NULL) return false;
00298         if(m_tf == NULL) return false;
00299         
00300         int step_count = 0;
00301         bool first = true;
00302         VECTOR distancetomidpoint = VECTOR(mx/2.0f,my/2.0f,mz/2.0f)-m_currentpos;
00303         int steps = (int)((distancetomidpoint.length() + m_radius)/m_steplength);
00304         do {
00305                 
00306                 if((m_currentpos.x >= 0.0)&&(m_currentpos.y >= 0.0)&&(m_currentpos.z >= 0.0)&&(m_currentpos.x < mx)&&(m_currentpos.y < my)&&(m_currentpos.z < mz)) {
00307                         if(first) {
00308                                 m_startpoint = VECTOR(m_currentpos.x,m_currentpos.y,m_currentpos.z);
00309                                 first = false;
00310                         }
00311                         int d = m_data->GetDensity((int)ROUND(m_currentpos.x),(int)ROUND(m_currentpos.y),(int)ROUND(m_currentpos.z));
00312                         if(d > m_treshold) {
00313                                 Color help_color = m_tf->GetDensityColor(d);
00314                                 float help_alpha = m_tf->GetOpacity(d);
00315                                 // lightning:
00316                                 help_color = Lighting(help_color);
00317                                 // calculate new currentcolor:
00318                                 m_currentcolor = help_color;
00319                                 // calculate new alphavalue
00320                                 m_alpha = help_alpha;
00321                                 break;
00322                         }
00323                 }
00324                 // calculate new position
00325                 m_currentpos += m_steplength*m_direction;
00326                 
00327                 step_count++;
00328         }while(step_count <= steps);
00329         if(m_alpha < 1.0 ) m_currentcolor += m_backgroundcolor*(1.0 - m_alpha);
00330         return true;
00331 }

bool FirstHitNN::SetTreshold int    treshold [inline]
 

Definition at line 83 of file ray.h.

00083 { m_treshold = treshold; return true;};


Member Data Documentation

int FirstHitNN::m_treshold [protected]
 

Definition at line 80 of file ray.h.

Referenced by CastNext().


The documentation for this class was generated from the following files:
Generated on Thu Jan 23 12:32:16 2003 by doxygen1.3-rc2