Пример #1
0
        public float[] SolveTimeFromX(float x, float eps = 1.0E-4F)
        {
            float a0 = P0.x - x;
            float a1 = 3 * (-P0.x + P1.x);
            float a2 = 3 * (P0.x - 2 * P1.x + P2.x);
            float a3 = -P0.x + P3.x + 3 * (P1.x - P2.x);

            double[] solution = EquationUtil.SolveCubic(a3, a2, a1, a0);

            return((from d in solution where (0 - eps <= d && d <= 1 + eps)select(float) d).Distinct().ToArray());
        }
Пример #2
0
        public float[] SolveTimeFromX(float x, float eps = 1.0E-4F)
        {
            float a0 = P0.x - x;
            float a1 = 3 * (-P0.x + P1.x);
            float a2 = 3 * (P0.x - 2 * P1.x + P2.x);
            float a3 = -P0.x + P3.x + 3 * (P1.x - P2.x);

            double[] solution = EquationUtil.SolveCubic(a3, a2, a1, a0);

            var set = new HashSet <float>();

            foreach (double d in solution)
            {
                if (0.0 - eps <= d && d <= 1.0 + eps)
                {
                    set.Add((float)d);
                }
            }
            return(set.ToArray());
        }
Пример #3
0
 private void b_equal_Click(object sender, EventArgs e)
 {
     this.t_result.Text = EquationUtil.ComputeEquation(this.t_equation.Text);
 }