Угол между тремя точками - через произведение векторов


Даны три точки.
Необходимо найти угол между ними.

Используем скалярное произведение векторов:
_   _    _     _                   
a * b = |a| * |b| * cos (alpha) = xa * xb + ya * yb

Листинг C++
double angle_point (point a, point b, point c)
{
   double x1 = a.x - b.x, x2 = c.x - b.x;
   double y1 = a.y - b.y, y2 = c.y - b.y;
   double d1 = sqrt (x1 * x1 + y1 * y1);
   double d2 = sqrt (x2 * x2 + y2 * y2);
   return acos ((x1 * x2 + y1 * y2) / (d1 * d2));
}

22.02.2008, 18:49

По всем вопросам обращаться: rumterg@gmail.com