예제 #1
0
        private static Vector2[] setupGradient(int gradSize)
        {
            Vector2[] gradients = new Vector2[gradSize];
            for (int i = 0; i < gradients.Length; ++i)
            {
                Vector2 v = new Vector2(JryMath.Sin(0.785398163f * i)
                                        , JryMath.Cos(0.785398163f * i));

                gradients[i] = v;
            }

            return(gradients);
        }
예제 #2
0
        public float Interpolate(float a, float b, float progress)
        {
            if (progress < 0)
            {
                return(a);
            }
            if (progress > 1)
            {
                return(b);
            }

            float tm = (1 - JryMath.Cos(progress * JryMath.Pi)) / 2;

            return(a * (1 - tm) + b * tm);
        }
예제 #3
0
        public void RotateSelected(float factor, Vector2 center)
        {
            if (!HasSelectedPoints)
            {
                return;
            }

            for (int i = 0; i < _points.Count; i++)
            {
                var pt    = _points[i];
                var index = _selectedPoints.IndexOf(pt);
                if (index != -1)
                {
                    pt = pt - center;
                    var p = new Vector2(JryMath.Cos(factor) * pt.X - JryMath.Sin(factor) * pt.Y,
                                        JryMath.Sin(factor) * pt.X + JryMath.Cos(factor) * pt.Y);
                    _points[i]             = p + center;
                    _selectedPoints[index] = _points[i];
                }
            }
            recalcEdges();
        }