code: def clockwise_sort(self, points):
      # returns 4x2 [[x1,y1],[x2,y2],[x3,y3],[x4,y4]] ndarray
      v1, v2, v3, v4 = points
      center = (v1 + v2 + v3 + v4) / 4
      theta = np.array(
          [
              self.cal_angle(v1 - center),
              self.cal_angle(v2 - center),
              self.cal_angle(v3 - center),
              self.cal_angle(v4 - center),
          ]
      )
      index = np.argsort(theta)
      return np.array([v1, v2, v3, v4])[index, :]
  
file_path: EasyOCR/trainer/craft/data/pseudo_label/make_charbox.py
imports: import os
  import random
  import math
  import numpy
  import cv2
  import torch
  from data import imgproc
  from data.pseudo_label.watershed import exec_watershed_by_version
label_desc: Use image node_id 9 for calling the PseudoCharBoxBuilder obj's underlying member method code with example usage: obj.clockwise_sort(points) and returns: np