Ignore:
Timestamp:
08/20/06 22:48:01 (18 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/KdIntersectable.h

    r1139 r1233  
    1010struct VssRayContainer; 
    1111class KdNode; 
     12class BvhNode; 
    1213 
    1314/** 
    14         Wrapper for Kd nodes for use in a PVS. 
     15        Wrapper used for creating a PVS compliant intersectable. 
    1516*/ 
    16 class KdIntersectable: public Intersectable 
     17template<typename T> 
     18class IntersectableWrapper: public Intersectable 
    1719{ 
    1820public: 
    19         KdIntersectable(KdNode *node); 
     21        IntersectableWrapper(T *item); 
    2022 
    21         /** Returns 'mesh' associated with this instance.  
     23        /** Returns node associated with this instance.  
    2224        */ 
    23         KdNode *GetNode() const; 
     25        T *GetItem() const; 
    2426 
    2527        /** See get. 
    2628        */ 
    27         void SetNode(KdNode *node); 
    28  
     29        void SetItem(T *item); 
    2930 
    3031        //-- inherited functions from Intersectable 
     
    3940   
    4041        int NumberOfFaces() const; 
    41         int Type() const; 
     42        //int Type() const; 
    4243 
    4344        int GetRandomSurfacePoint(GtpVisibilityPreprocessor::Vector3 &point,  
     
    5253         
    5354 
    54         /** Pointer to kd leaf object that was hit during ray casting. 
    55         */ 
    56         Intersectable *mHitObject; 
    57  
    5855protected: 
    5956         
    60         KdNode *mNode; 
     57        T *mItem; 
    6158}; 
    6259 
     60template<typename T> 
     61IntersectableWrapper<T>::IntersectableWrapper(T *item): 
     62Intersectable(), mItem(item) 
     63{ 
     64} 
     65 
     66template<typename T> 
     67void IntersectableWrapper<T>::SetItem(T *item) 
     68{ 
     69        mItem = item; 
     70} 
     71 
     72template<typename T> 
     73T *IntersectableWrapper<T>::GetItem() const 
     74{  
     75        return mItem;  
     76} 
     77         
     78template<typename T> 
     79AxisAlignedBox3 IntersectableWrapper<T>::GetBox() const 
     80{       // TODO matt 
     81        return AxisAlignedBox3(); 
     82} 
     83 
     84template<typename T> 
     85int IntersectableWrapper<T>::CastRay(Ray &ray) 
     86{       // TODO matt 
     87        return 0; 
     88} 
     89         
     90template<typename T> 
     91bool IntersectableWrapper<T>::IsConvex() const 
     92{ 
     93        return true; 
     94} 
     95 
     96template<typename T> 
     97bool IntersectableWrapper<T>::IsWatertight() const 
     98{ 
     99        return true; 
     100} 
     101 
     102template<typename T> 
     103float IntersectableWrapper<T>::IntersectionComplexity() 
     104{ 
     105        return 1.0f; 
     106} 
     107 
     108template<typename T> 
     109int IntersectableWrapper<T>::NumberOfFaces() const 
     110{ 
     111        return 0; 
     112} 
     113 
     114template<typename T> 
     115int IntersectableWrapper<T>::GetRandomSurfacePoint(Vector3 &point, 
     116                                                                                                Vector3 &normal) 
     117{ 
     118        return 0; 
     119} 
     120 
     121template<typename T> 
     122int IntersectableWrapper<T>::GetRandomVisibleSurfacePoint(Vector3 &point, 
     123                                                                                                           Vector3 &normal, 
     124                                                                                                           const Vector3 &viewpoint, 
     125                                                                                                           const int maxTries) 
     126{ 
     127        return 0; 
     128} 
     129   
     130template<typename T> 
     131ostream &IntersectableWrapper<T>::Describe(ostream &s) 
     132{ 
     133        s << mItem; 
     134        return s; 
     135} 
     136 
     137 
     138class KdIntersectable: public IntersectableWrapper<KdNode> 
     139{ 
     140public: 
     141        KdIntersectable(KdNode *item): 
     142        IntersectableWrapper<KdNode>(item) {} 
     143 
     144        int Type() const 
     145        { 
     146                return Intersectable::KD_INTERSECTABLE; 
     147        } 
     148}; 
     149 
     150 
     151class BvhIntersectable: public IntersectableWrapper<BvhNode> 
     152{ 
     153public: 
     154        BvhIntersectable(BvhNode *item): 
     155        IntersectableWrapper<BvhNode>(item) {} 
     156 
     157        int Type() const 
     158        { 
     159                return Intersectable::BVH_INTERSECTABLE; 
     160        } 
     161}; 
    63162 
    64163} 
Note: See TracChangeset for help on using the changeset viewer.