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); }
public static void XAxisWeightMinDistance3() { XAxisWeightMinDistanceData test = new XAxisWeightMinDistanceData(); double minX = test.GetMinWeightDistanceX(); double minSum = test.GetDistance(minX); Debug.Log("XAxisWeightMinDistance3 " + minSum + " minX " + minX); }