예제 #1
0
    public static void XAxisWeightMinDistance2()
    {
        XAxisWeightMinDistanceData test = new XAxisWeightMinDistanceData();
        double total = 0;

        foreach (var iter in test.m_posList)
        {
            total += iter;
        }

        // f(x) = Abs(x - x1) * weight1 + ...Abs(x - xN) * weightN - ( total / 2)
        double t1 = 20d, t2 = 0;

        do
        {
            double sum = test.GetDistance(t1);
            t2 = t1 - (sum - total / 2) / test.GetDistanceDerivative(t1);

            if (Math.Abs(t1 - t2) < 0.001d)
            {
                break;
            }

            t1 = t2;
        } while (true);

        double minSum = test.GetDistance(t2);

        Debug.Log("XAxisWeightMinDistance2 " + minSum + " minPos " + t2);
    }
예제 #2
0
    public static void XAxisWeightMinDistance3()
    {
        XAxisWeightMinDistanceData test = new XAxisWeightMinDistanceData();
        double minX   = test.GetMinWeightDistanceX();
        double minSum = test.GetDistance(minX);

        Debug.Log("XAxisWeightMinDistance3 " + minSum + " minX " + minX);
    }