Ejemplo n.º 1
0
        /// <summary>
        ///     find which line segment our x fits into
        /// </summary>
        /// <param name="x"></param>
        /// <returns></returns>
        public float GetOutput(float x)
        {
            var target = 0;

            if (x < XPoints[0])
            {
                return(YPoints[0]);
            }

            if (x > XPoints.Last())
            {
                return(YPoints.Last());
            }

            for (var counter = 0; counter < XPoints.Length; counter++)
            {
                if (x < XPoints[counter])
                {
                    target = counter;
                    break;
                }

                if (Math.Abs(x - XPoints[counter]) < Tolerance)
                {
                    return(YPoints[counter]);
                }
            }

            var a         = YPoints[target] - YPoints[target - 1]; //y2-y1
            var b         = XPoints[target] - XPoints[target - 1]; //x2-x1
            var m         = a / b;                                 //slope
            var intercept = YPoints[target] - m * XPoints[target]; //b

            return(m * x + intercept);
        }
Ejemplo n.º 2
0
        public virtual async void MenuSwipe(object sender, PanUpdatedEventArgs e)
        {
            double totalLeftX  = 0;
            double totalRightX = 0;

            if (e.StatusType == GestureStatus.Running || e.StatusType == GestureStatus.Started)
            {
                XPoints.Add(e.TotalX);
                totalLeftX  = -1 * MasterStack.TranslationX / 1.5 + 100 + e.TotalX;
                totalRightX = MasterStack.TranslationX / 1.5 + 100 + e.TotalX;
                if (totalLeftX < -700 || totalRightX > 700 || e.TotalX.Equals(0))
                {
                    return;
                }

                if (e.TotalX < 0)
                {
                    MasterStack.IsVisible = true;
                    await MasterStack.LayoutTo(
                        new Rectangle(-1 * MasterStack.TranslationX / 1.5 + 100 + e.TotalX, 0, 600, 600), 250U,
                        Easing.SinOut);

                    XPoints.RemoveAll(x => x > 0);
                    IsMasterDisplayed = true;
                }
                else
                {
                    MasterStack.IsVisible = true;
                    await MasterStack.LayoutTo(
                        new Rectangle(MasterStack.TranslationX / 2 + 100 + e.TotalX, 0, 600, 600), 250U,
                        Easing.SinOut);

                    XPoints.RemoveAll(x => x < 0);
                    IsMasterDisplayed = true;
                }
                return;
            }

            if (e.StatusType == GestureStatus.Completed)
            {
                if (IsMasterDisplayed)
                {
                    MasterStack.IsVisible = true;
                    await MasterStack.LayoutTo(new Rectangle(100 - MasterStack.TranslationX, 0, 600, 600), 250U, Easing.SinOut);

                    XPoints.Clear();
                    IsMasterDisplayed = true;
                }
                else
                {
                    MasterStack.IsVisible = false;
                    await MasterStack.LayoutTo(new Rectangle(MasterStack.TranslationX - 100, 0, 600, 600), 250U, Easing.SinOut);

                    XPoints.Clear();
                    IsMasterDisplayed = false;
                }
            }
        }
Ejemplo n.º 3
0
 private void CalculateMinPoints()
 {
     XMin = XPoints.Min();
     YMin = YPoints.Min();
     ZMin = ZPoints.Min();
 }
Ejemplo n.º 4
0
 private void CalculateMaxPoints()
 {
     XMax = XPoints.Max();
     YMax = YPoints.Max();
     ZMax = ZPoints.Max();
 }