code: def __cal_ang(p1, p2, p3):
      eps = 1e-12
      a = math.sqrt(
          (p2[0] - p3[0]) * (p2[0] - p3[0])
          + (p2[1] - p3[1]) * (p2[1] - p3[1])
      )
      b = math.sqrt(
          (p1[0] - p3[0]) * (p1[0] - p3[0])
          + (p1[1] - p3[1]) * (p1[1] - p3[1])
      )
      c = math.sqrt(
          (p1[0] - p2[0]) * (p1[0] - p2[0])
          + (p1[1] - p2[1]) * (p1[1] - p2[1])
      )
      ang = math.degrees(
          math.acos((b**2 - a**2 - c**2) / (-2 * a * c + eps))
      )  # p2对应
      return ang
  
file_path: PaddleSeg/EISeg/eiseg/util/polygon.py
imports: from enum import Enum
  import cv2
  import numpy
  import math
  from .regularization import boundary_regularization
label_desc: Use image node_id 4 for calling a global function with example usage: __cal_ang(p1, p2, p3) and returns: ang