mourning-ember / src / main / java / dev / llan / model / board / Connection.java
Connection.java
Raw
package dev.llan.model.board;

import dev.llan.model.board.generation.DirectedPoint;

import java.util.List;

public class Connection {
  private final DirectedPoint from;
  private final DirectedPoint to;

  public static Connection getClosestPair(List<DirectedPoint> fromList, List<DirectedPoint> toList) {
    assert fromList.size() > 0 && toList.size() > 0;

    int minFromIndex = 0;
    int minToIndex = 0;
    double minDistance = Double.POSITIVE_INFINITY;

    for(int i = 0; i < fromList.size(); i++) {
      for(int j = 0; j < toList.size(); j++) {
        double distance = Point.getDistance(fromList.get(i).point(), toList.get(j).point());
        if(distance < minDistance) {
          minDistance = distance;
          minFromIndex = i;
          minToIndex = j;
        }
      }
    }

    return new Connection(fromList.get(minFromIndex), toList.get(minToIndex));
  }

  public Connection(DirectedPoint from, DirectedPoint to) {
    this.from = from;
    this.to = to;
  }

  public DirectedPoint getFrom() {
    return from;
  }

  public DirectedPoint getTo() {
    return to;
  }
}