Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes

OpenTissue::scan_conversion::FragmentIterator< vector3_type > Class Template Reference

#include <scan_conversion_fragment_iterator.h>

List of all members.

Public Member Functions

bool valid () const
int x () const
int y () const
vector3_type normal () const
virtual ~FragmentIterator ()
 FragmentIterator (vector3_type const &v1, vector3_type const &n1, vector3_type const &v2, vector3_type const &n2, vector3_type const &v3, vector3_type const &n3)
 FragmentIterator (vector3_type const &v1, vector3_type const &v2, vector3_type const &v3)
 FragmentIterator (FragmentIterator const &iter)
FragmentIterator const & operator= (FragmentIterator const &iter)
bool operator() () const
bool operator++ ()
void initialize (vector3_type const &v1, vector3_type const &n1, vector3_type const &v2, vector3_type const &n2, vector3_type const &v3, vector3_type const &n3)

Protected Types

enum  state_type { find_nonempty_scanline_state, in_scanline_state, scanline_found_state, finished_state }
typedef
OpenTissue::scan_conversion::detail::RigdeIterator
< vector3_type
ridge_iterator

Protected Member Functions

int find_lower_left_vertex_index ()
int find_upper_left_vertex_index ()
ridge_iterator get_left_ridge_iterator () const
ridge_iterator get_right_ridge_iterator () const
bool find_nonempty_scanline ()

Protected Attributes

vector3_type m_vertex [3]
 The 3D Transformed vertices.
vector3_type m_normal [3]
 The original 3D normals.
int m_lower_left_idx
int m_upper_left_idx
int m_the_other_idx
ridge_iterator m_left_ridge_iterator
ridge_iterator m_right_ridge_iterator
state_type m_state
int m_start_x
int m_start_y
int m_end_x
int m_end_y
int m_current_x
int m_current_y

Detailed Description

template<typename vector3_type>
class OpenTissue::scan_conversion::FragmentIterator< vector3_type >

Fragment Iterator. Typical usage is as follows:

typedef FragmentIterator<vector3_type> fragment_iterator;

vector3_type v1; vector3_type v2; vector3_type v3; vector3_type n1; vector3_type n2; vector3_type n3;

pragment_iterator pixel ( v1, n1 , v2 , n2, v3 , n4);

while( pixel() ) { std::cout << "sreen x = " << pixel.x() << "sreen y = " << pixel.y() << "normal = " << pixel.normal() << std::endl; ++pixel; }


Member Typedef Documentation


Member Enumeration Documentation

template<typename vector3_type>
enum OpenTissue::scan_conversion::FragmentIterator::state_type [protected]
Enumerator:
find_nonempty_scanline_state 
in_scanline_state 
scanline_found_state 
finished_state 

Constructor & Destructor Documentation

template<typename vector3_type>
virtual OpenTissue::scan_conversion::FragmentIterator< vector3_type >::~FragmentIterator (  )  [inline, virtual]
template<typename vector3_type>
OpenTissue::scan_conversion::FragmentIterator< vector3_type >::FragmentIterator ( vector3_type const &  v1,
vector3_type const &  n1,
vector3_type const &  v2,
vector3_type const &  n2,
vector3_type const &  v3,
vector3_type const &  n3 
) [inline]

vertex coordinates are assumed to be transformed into screen space of the camera. Normals can be given in whatever coordinate frame one wants. Just remember that normals are lineary interpolated in screen space.

template<typename vector3_type>
OpenTissue::scan_conversion::FragmentIterator< vector3_type >::FragmentIterator ( vector3_type const &  v1,
vector3_type const &  v2,
vector3_type const &  v3 
) [inline]

vertex coordinates are assumed to be transformed into screen space of the camera.

template<typename vector3_type>
OpenTissue::scan_conversion::FragmentIterator< vector3_type >::FragmentIterator ( FragmentIterator< vector3_type > const &  iter  )  [inline]

Member Function Documentation

template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::find_lower_left_vertex_index (  )  [inline, protected]

returns the index of the vertex with the smallest y-coordinate If there is a horizontal edge, the vertex with the smallest x-coordinate is chosen.

template<typename vector3_type>
bool OpenTissue::scan_conversion::FragmentIterator< vector3_type >::find_nonempty_scanline (  )  [inline, protected]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::find_upper_left_vertex_index (  )  [inline, protected]

returns the index of the vertex with the greatest y-coordinate If there is a horizontal edge, the vertex with the smallest x-coordinate is chosen.

template<typename vector3_type>
ridge_iterator OpenTissue::scan_conversion::FragmentIterator< vector3_type >::get_left_ridge_iterator (  )  const [inline, protected]
template<typename vector3_type>
ridge_iterator OpenTissue::scan_conversion::FragmentIterator< vector3_type >::get_right_ridge_iterator (  )  const [inline, protected]
template<typename vector3_type>
void OpenTissue::scan_conversion::FragmentIterator< vector3_type >::initialize ( vector3_type const &  v1,
vector3_type const &  n1,
vector3_type const &  v2,
vector3_type const &  n2,
vector3_type const &  v3,
vector3_type const &  n3 
) [inline]

vertex coordinates are assumed to be transformed into screen space of the camera. Normals can be given in whatever coordinate frame one wants. Just remember that normals are lineary interpolated in screen space.

template<typename vector3_type>
vector3_type OpenTissue::scan_conversion::FragmentIterator< vector3_type >::normal (  )  const [inline]
template<typename vector3_type>
bool OpenTissue::scan_conversion::FragmentIterator< vector3_type >::operator() (  )  const [inline]
Returns:
If there are any more fragments left then the return value is true otherwise it is false.
template<typename vector3_type>
bool OpenTissue::scan_conversion::FragmentIterator< vector3_type >::operator++ (  )  [inline]

Advances the iterator to the next fragment. Initially the fragement iterator points to the first fragment (if any).

template<typename vector3_type>
FragmentIterator const& OpenTissue::scan_conversion::FragmentIterator< vector3_type >::operator= ( FragmentIterator< vector3_type > const &  iter  )  [inline]
template<typename vector3_type>
bool OpenTissue::scan_conversion::FragmentIterator< vector3_type >::valid (  )  const [inline]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::x (  )  const [inline]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::y (  )  const [inline]

Member Data Documentation

template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_current_x [protected]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_current_y [protected]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_end_x [protected]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_end_y [protected]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_lower_left_idx [protected]
template<typename vector3_type>
vector3_type OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_normal[3] [protected]

The original 3D normals.

template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_start_x [protected]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_start_y [protected]
template<typename vector3_type>
state_type OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_state [protected]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_the_other_idx [protected]
template<typename vector3_type>
int OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_upper_left_idx [protected]
template<typename vector3_type>
vector3_type OpenTissue::scan_conversion::FragmentIterator< vector3_type >::m_vertex[3] [protected]

The 3D Transformed vertices.


The documentation for this class was generated from the following file: