Exemplo n.º 1
0
 // Check whether given two line intersects
 bool LinesIntersect(customLine line1, customLine line2)
 {
     return((Mathf.Max(line1.StartPoint.x, line1.EndPoint.x) >= Mathf.Min(line2.StartPoint.x, line2.EndPoint.x)) &&
            (Mathf.Max(line2.StartPoint.x, line2.EndPoint.x) >= Mathf.Min(line1.StartPoint.x, line1.EndPoint.x)) &&
            (Mathf.Max(line1.StartPoint.y, line1.EndPoint.y) >= Mathf.Min(line2.StartPoint.y, line2.EndPoint.y)) &&
            (Mathf.Max(line2.StartPoint.y, line2.EndPoint.y) >= Mathf.Min(line1.StartPoint.y, line1.EndPoint.y)));
 }
Exemplo n.º 2
0
    bool Collides()
    {
        if (pointsList.Count < 3)
        {
            return(false);
        }
        int TotalLines = pointsList.Count - 1;

        customLine [] lines = new customLine [TotalLines];

        // Fill lines array with past lines
        for (int i = 0; i < TotalLines; i++)
        {
            lines [i].StartPoint = pointsList [i];
            lines [i].EndPoint   = pointsList [i + 1];
        }

        // Check the currentLine against every past line
        for (int i = 0; i < TotalLines - 2; i++)
        {
            customLine currentLine;
            currentLine.StartPoint = pointsList [pointsList.Count - 2];
            currentLine.EndPoint   = pointsList [pointsList.Count - 1];
            if (LinesIntersect(lines [i], currentLine))
            {
                return(true);
            }
        }

        return(false);
    }