Example #1
0
        public ValueAndDerivative GetValueAndDerivative(float t, Vector3[] precalculatedValues)
        {
            ValueAndDerivative v = new ValueAndDerivative();

            v.Value      = Vector3.zero;
            v.Derivative = Vector3.zero;

            int n = Points.Count - 1;

            for (int i = 0; i < Points.Count; ++i)
            {
                v.Value += precalculatedValues[i] * Mathf.Pow(t, (float)i);
                if (i < Points.Count - 1)
                {
                    v.Derivative += (Points[i + 1] - Points[i]) *
                                    GetCoefficient(n - 1, i) *
                                    Mathf.Pow(t, (float)i) *
                                    Mathf.Pow(1.0f - t, (float)(n - 1 - i));
                }
            }
            v.Derivative *= (float)Points.Count;

            return(v);
        }
Example #2
0
		public ValueAndDerivative GetValueAndDerivative(float t, Vector3[] precalculatedValues)
		{
			ValueAndDerivative v = new ValueAndDerivative();
			v.Value = Vector3.zero;
			v.Derivative = Vector3.zero;

			int n = Points.Count - 1;

			for (int i = 0; i < Points.Count; ++i)
			{
				v.Value += precalculatedValues[i] * Mathf.Pow(t, (float)i);
				if (i < Points.Count - 1)
				{
					v.Derivative += (Points[i + 1] - Points[i]) *
									GetCoefficient(n - 1, i) *
									Mathf.Pow(t, (float)i) *
									Mathf.Pow(1.0f - t, (float)(n - 1 - i));
				}
			}
			v.Derivative *= (float)Points.Count;

			return v;
		}