computeOctPts method

List<Coordinate> computeOctPts(
  1. List<Coordinate> inputPts
)

Implementation

List<Coordinate> computeOctPts(List<Coordinate> inputPts) {
  List<Coordinate> pts = List.filled(8, Coordinate.empty2D());
  for (int j = 0; j < pts.length; j++) {
    pts[j] = inputPts[0];
  }
  for (int i = 1; i < inputPts.length; i++) {
    if (inputPts[i].x < pts[0].x) {
      pts[0] = inputPts[i];
    }
    if (inputPts[i].x - inputPts[i].y < pts[1].x - pts[1].y) {
      pts[1] = inputPts[i];
    }
    if (inputPts[i].y > pts[2].y) {
      pts[2] = inputPts[i];
    }
    if (inputPts[i].x + inputPts[i].y > pts[3].x + pts[3].y) {
      pts[3] = inputPts[i];
    }
    if (inputPts[i].x > pts[4].x) {
      pts[4] = inputPts[i];
    }
    if (inputPts[i].x - inputPts[i].y > pts[5].x - pts[5].y) {
      pts[5] = inputPts[i];
    }
    if (inputPts[i].y < pts[6].y) {
      pts[6] = inputPts[i];
    }
    if (inputPts[i].x + inputPts[i].y < pts[7].x + pts[7].y) {
      pts[7] = inputPts[i];
    }
  }
  return pts;
}