예제 #1
0
    public static void unitCircleLoop2D <Data>(int numSegments, LineCallback2DData <Data> lineCallback, Data data)
    {
        if (lineCallback == null)
        {
            throw new System.ArgumentNullException();
        }
        if (numSegments < 3)
        {
            numSegments = 3;
        }

        unitArcLoop2D(0.0f, (float)Mathf.PI * 2.0f, numSegments, lineCallback, data);
    }
예제 #2
0
    public static void unitArcLoop2D <Data>(float startAngle, float endAngle, int numSegments, LineCallback2DData <Data> lineCallback, Data data)
    {
        if (lineCallback == null)
        {
            throw new System.ArgumentNullException();
        }

        if (numSegments <= 0)
        {
            throw new System.ArgumentException();
        }

        var   prevSinCos = getSinCos(startAngle);
        float angleStep  = (endAngle - startAngle) / (float)numSegments;

        for (int i = 1; i <= numSegments; i++)
        {
            float curAngle  = startAngle + angleStep * (float)i;
            var   curSinCos = getSinCos(curAngle);
            lineCallback(prevSinCos, curSinCos, data);
            prevSinCos = curSinCos;
        }
    }