예제 #1
0
        public void Update(Vector2 location)
        {
            if (performCalled)
            {
                return;
            }
            if (!firstSet)
            {
                firstLocation = location;
                firstSet      = true;
            }

            var dot   = Vector2.Dot(firstLocation.Normalize(), location.Normalize());
            var angle = JryMath.Acos(dot);
            var a     = (updated - center).Normalize();
            var b     = (location - center).Normalize();

            angle = (float)(Math.Atan2(a.Y, a.X) -
                            Math.Atan2(b.Y, b.X));
            if (!float.IsNaN(angle))
            {
                updatablePolygon.RotateSelected(angle, center);
            }
            updated = location;
        }
예제 #2
0
 private float decideAngle(float x, float y)
 {
     if (x >= 0 && y >= 0)
     {
         return(JryMath.Acos(x));
     }
     else if (x >= 0)
     {
         return(JryMath.Pi * 2 - JryMath.Acos(x));
     }
     else if (y >= 0)
     {
         return(JryMath.Acos(x));
     }
     else
     {
         return(JryMath.Pi * 2 - JryMath.Acos(x));
     }
 }