#ifndef linecol_h
#define linecol_h

#include "vector2d.h"

class colclass
{
public:
    int plainlinecol(vector2d z1, vector2d z2, vector2d v1, vector2d v2)
    {
        float ua, ub;
        ua = ((z1.x - z2.x) * (v1.y - z2.y) - (z1.y - z2.y) * (v1.x - z2.x)) / ((z1.y - z2.y) * (v2.x - v1.x) - (z1.x - z2.x) * (v2.y - v1.y));
        ub = ((v2.x - v1.x) * (v1.y - z2.y) - (v2.y - v1.y) * (v1.x - z2.x)) / ((z1.y - z2.y) * (v2.x - v1.x) - (z1.x - z2.x) * (v2.y - v1.y));
        if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1)
        {
            return 1;
        }
        return 0;
    }

    int optlinetest(vector2d z1, vector2d z2, vector2d v1, vector2d v2)
    {
        if(z1.y>z2.y)
        {
            if(v1.y>z1.y&&v2.y>z1.y)
                return 0;
            if(v1.y<z2.y&&v2.y<z2.y)
                return 0;
        }
        else
        {
            if(v1.y>z2.y&&v2.y>z2.y)
                return 0;
            if(v1.y<z1.y&&v2.y<z1.y)
                return 0;
        }
        if(z1.x>z2.x)
        {
            if(v1.x>z1.x&&v2.x>z1.x)
                return 0;
            if(v1.x<z2.x&&v2.x<z2.x)
                return 0;
        }
        else
        {
            if(v1.x>z2.x&&v2.x>z2.x)
                return 0;
            if(v1.x<z1.x&&v2.x<z1.x)
                return 0;
        }
        return plainlinecol(z1, z2, v1, v2);
    }



};

#endif
