libjbt

polyline.h

This is the verbatim text of the polyline.h include file.

#ifndef jbt_polyline_h
#define jbt_polyline_h

#include "primitive.h"


class jbt_polyline : public jbt_primitive
{
public:

    jbt_polyline( const jVec3*, int, jFlt pr = 0.5, jFlt r = 1.0 );
    ~jbt_polyline();
    

    int count() const { return npts; }


    const jVec3& getPoint( jUInt i ) const 
        { i = i>npts ? npts-1 : i;  return points[i].pt; }

private:
    
    jVec3 displacement();

    void bracket( const jRay&, jbt_brackets& );
    jVec2 uvl( const jVec3& );

    jFlt vcoord();
    jFlt ucoord();

    void precompute();
    void seedPoints( jVec3list& ) const;
    void computeBound();
    jbt_blobtree::Type type() const { return jbt_blobtree::jbtPolyLine; }
    
    struct point
    {
        point(){};
        point( const jVec3& );
        
        jVec3 pt;
        jFlt t;
        jNorm3 N;
        jVec3 co;
        jFlt al;
    } 
    * points;

    struct line
    {
        line(){};
        line( const jVec3&, const jVec3& );
        
        jNorm3 dir;
        jFlt len;

        static void Project( const jVec3&, point*, line*, int );

        jVec3 pp;
        jFlt t;
    }
    * lines;
    int npts,p_line;
    jFlt pr,ttl_len;
    jVec3 sp;
};

#endif

JSP / libjbt v0.1 mtigges@cpsc.ucalgary.ca