void IntersectVisitor::IntersectState::addLineSegment(osg::LineSegment* seg)
{
    // create a new segment transformed to local coordintes.
    LineSegment* ns = new LineSegment;

    if (_model_inverse.valid())
    {
        if (_view_inverse.valid())
        {
            osg::Matrix matrix = (*(_view_inverse)) * (*(_model_inverse));
            ns->mult(*seg,matrix);
        }
        else
        {
            ns->mult(*seg,*(_model_inverse));
        }
    }
    else if (_view_inverse.valid())
    {
        ns->mult(*seg,*(_view_inverse));
    }
    else
    {
        *ns = *seg;
    }

    _segList.push_back(LineSegmentPair(seg,ns));
}