private MateResult mate(Edge e, ArrayList<Point> s) {
Point bestp = null;
double t = Double.MAX_VALUE, bestt = Double.MAX_VALUE;
Edge f = e;
f = f.rot();
System.out.println("search mate for edge: " + e);
//запрос к дереву центр - середина ребра, радиус меняем от половины ребра до 800 * sqrt(2)
for (int i = 0; i < s.size(); i++) {
if (s.get(i).classify(e) == Position.RIGHT) {
Edge g = new Edge(e.dest, s.get(i));
g = g.rot();
IntersectResult resu = f.intersect(g, t);
if (resu.val < bestt) {
bestp = s.get(i);
bestt = resu.val;
}
}
}
if (bestp != null) {
System.out.println("found point in mate: " + bestp);
return new MateResult(true, bestp);
}
System.out.println("didn't found point in mate");
return new MateResult(false, null);
}