Example #1
0
        private T nudge(VectorLike <T> inputVal, VectorLike <T> targetVal, double?sigma = null, double strength = 1.0)
        {
            VectorLike <T> nudgeVector = targetVal - inputVal;
            var            Sigma       = sigma ?? (Math.Max(targetVal.Length, inputVal.Length) * hintToleranceFactor);
            var            zScore      = nudgeVector.Length / Sigma;

            zScore = (zScore < -hintToleranceFactor) ? zScore + hintToleranceFactor
                : (zScore > hintToleranceFactor) ? zScore - hintToleranceFactor
                : 0.0;

            var amount = strength * Math.Min(1.0, zScore);

            return((T)(inputVal + amount * nudgeVector));
        }
Example #2
0
        public void CalculateRaw()
        {
            VectorLike <T> V = (VectorLike <T>)initialVelocity;
            VectorLike <T> D = default(VectorLike <T>);

            //TimeSpan T = TimeSpan.Zero;
            foreach (VectorAndTime <T> A in rawAs.Skip(1))
            {
                V += (VectorLike <T>)(A.V) * (float)A.t.TotalSeconds;
                rawVs.Add(new VectorAndTime <T>((T)V, A.t));
                D += V * (float)A.t.TotalSeconds;
                rawDs.Add(new VectorAndTime <T>((T)D, A.t));
                //T += A.t;
            }
        }