title: Retrieve a positive or a negative angle from 3 points
body: <p>I am rotating points around a center point in 2D space.  The points are the center point, the old mouse position, and the new mouse position.  My rotation function works fine, and I can calculate the angle perfectly.  But I want to calculate a negative angle if the user is moving their mouse in a direction which should be interpreted as counter-clockwise.</p>
  
  <p>For example, moving the mouse toward the right (positive x-axis) should rotate clockwise if you are above (less than) the y value of the center point, but it should rotate counter-clockwise if you are actually below (greater than) the y value of the center point.</p>
  
  <p>Here's what I have:</p>
  
  <pre><code>PointF centerPoint;
  PointF oldPoint;
  PointF newPoint;
  
  double Xc = centerPoint.X;
  double Yc = centerPoint.Y;
  double Xb = oldPoint.X;
  double Yb = oldPoint.Y;
  double Xa = newPoint.X;
  double Ya = newPoint.Y;
  
  double c2 = (Math.Pow(Xb - Xa, 2) + Math.Pow(Yb - Ya, 2));
  double a2 = (Math.Pow(Xb - Xc, 2) + Math.Pow(Yb - Yc, 2));
  double b2 = (Math.Pow(Xa - Xc, 2) + Math.Pow(Ya - Yc, 2));
  
  double a = Math.Sqrt(a2);
  double b = Math.Sqrt(b2);
  
  double val = (a2 + b2 - c2) / (2 * a * b);
  double angle = Math.Acos(val);
  </code></pre>
  
  <p>So I need a way to make angle negative when it needs to be, so the points rotate clockwise or counter-clockwise to follow the mouse position.</p>