static function angle($pointA, $pointB, $pointC)
{
if (!isset(self::$angleTable[$pointA->guid . ';' . $pointB->guid . ';' . $pointC->guid])) {
$AB = Point::distance($pointA, $pointB);
$BC = Point::distance($pointB, $pointC);
$AC = Point::distance($pointC, $pointA);
// Al-Khashi theorem
self::$angleTable[$pointA->guid . ';' . $pointB->guid . ';' . $pointC->guid] = rad2deg(acos((pow($AB, 2) + pow($BC, 2) - pow($AC, 2)) / (2 * $AB * $BC)));
}
return self::$angleTable[$pointA->guid . ';' . $pointB->guid . ';' . $pointC->guid];
}