今回から平面走査法という手法による,
はじめに
計算幾何学では,
多数の線分から交差を見つける
前回,
さて今後,
線分の交差を示すクラス
まず初めに,
線分の交差を表現するクラス
public class Intersection {
public LineSegment segment1;
public LineSegment segment2;
public Intersection(LineSegment segment1, LineSegment segment2) {
this.segment1 = segment1;
this.segment2 = segment2;
}
public Point2D getIntersectionPoint() {
return segment1.getIntersectionPoint(segment2);
}
@Override
public String toString() {
return segment1 + " : " + segment2;
}
}
さて,
ここでは,
equals()メソッドとhashCode()メソッド
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
} else if (obj instanceof Intersection) {
Intersection other = (Intersection) obj;
// segment1とsegment2を交換しても同値性が変わらないようにする
if (segment1.equals(other.segment1) && segment2.equals(other.segment2)) {
return true;
} else if (segment1.equals(other.segment2) && segment2.equals(other.segment1)) {
return true;
}
}
return false;
}
@Override
public int hashCode() {
// segment1とsegment2を交換してもハッシュ値が変わらないようにする
return segment1.hashCode() + segment2.hashCode();
}
交差検出のインターフェース
次に,
IntersectionDetectorインターフェース
public interface IntersectionDetector {
Collection<Intersection> execute(List<LineSegment> segments);
}