public static int collisionRotate(Segment seg,double ang,Object3d o)
    {
        //double save=seg.beta;
        if (seg.blocked)
            return 1; //it has collided before
        if (seg.jointconstraint)
        {
            if (seg.beta+ang > seg.maxbeta)
            {
                ang=seg.maxbeta-seg.beta;
            }
            if (seg.beta+ang < seg.minbeta)
            {
                ang=seg.minbeta-seg.beta;
            }
        }

        // if at the joint limit
        if (ang==0)
        {
            if (seg.seg_pan!=null)
                seg.update_panel();
            seg.blocked=true;
            return 1;
        }
        else
            seg.rotateJoint(ang); // this update automatically
        double colv=new_segmentCollision(seg,o);

        if (colv>0.0001)
        {
            seg.blocked=true;
            return 1;
        }
        return 0;
    }