/// <summary>
    ///     check if two roads intersect with each other using overlapping
    /// </summary>
    /// <param name="road1">Road1.</param>
    /// <param name="road2">Road2.</param>
    bool intersect(Road road1, Road road2)
    {
        GameObject road1Obj = Instantiate(road1.roadType, road1.postion + road1.startPos, road1.Rotation) as GameObject;
        GameObject road2Obj = Instantiate(road2.roadType, road2.postion + road2.startPos, road2.Rotation) as GameObject;

        road1Obj.transform.position    = road1.postion + road1.startPos;
        road2Obj.transform.position    = road2.postion + road2.startPos;
        road1Obj.transform.eulerAngles = road1.Rotation.eulerAngles;
        road2Obj.transform.eulerAngles = road2.Rotation.eulerAngles;


        Vector3 BoxObj1Min = road1Obj.GetComponent <BoxCollider>().bounds.min;
        Vector3 BoxObj1Max = road1Obj.GetComponent <BoxCollider>().bounds.max;

        Vector3 BoxObj2Min = road2Obj.GetComponent <BoxCollider>().bounds.min;
        Vector3 BoxObj2Max = road2Obj.GetComponent <BoxCollider>().bounds.max;

        Myx Box1x = new Myx();
        Myx Box2x = new Myx();

        Myx Box1y = new Myx();
        Myx Box2y = new Myx();

        Myx Box1z = new Myx();
        Myx Box2z = new Myx();

        Box1x.xmin = BoxObj1Min.x; Box1x.xmax = BoxObj1Max.x;
        Box1y.xmin = BoxObj1Min.y; Box1y.xmax = BoxObj1Max.y;
        Box1z.xmin = BoxObj1Min.z; Box1z.xmax = BoxObj1Max.z;

        Box2x.xmin = BoxObj2Min.x; Box2x.xmax = BoxObj2Max.x;
        Box2y.xmin = BoxObj2Min.y; Box2y.xmax = BoxObj2Max.y;
        Box2z.xmin = BoxObj2Min.z; Box2z.xmax = BoxObj2Max.z;

        Destroy(road1Obj);
        Destroy(road2Obj);
        return(overlapping3D(Box1x, Box2x, Box1y, Box2y, Box1z, Box2z));
    }
 bool overlapping3D(Myx x1, Myx x2, Myx y1, Myx y2, Myx z1, Myx z2)
 {
     return(overlapping1D(x1, x2) && overlapping1D(y1, y2) && overlapping1D(z1, z2));
 }
 bool overlapping2D(Myx x1, Myx x2, Myx y1, Myx y2)
 {
     return(overlapping1D(x1, x2) && overlapping1D(y1, y2));
 }
 bool overlapping1D(Myx x1, Myx x2)
 {
     return(x1.xmax >= x2.xmin && x2.xmax >= x1.xmin);
 }