-package de.cwde.shisensho;
-
-public class Line {
- public Line(Point a, Point b) {
- this.a=a;
- this.b=b;
- }
-
- public boolean equals(Line l) {
- return (a.equals(l.a) && b.equals(l.b));
- }
-
- public boolean isHorizontal() {
- return (a.i==b.i);
- }
-
- public boolean isVertical() {
- return (a.j==b.j);
- }
-
- public boolean contains(Point p) {
- return (p.i==a.i && p.i==b.i && p.j>=getMin().j && p.j<=getMax().j)
- || (p.j==a.j && p.j==b.j && p.i>=getMin().i && p.i<=getMax().i);
- }
-
- public Point cuts(Line l) {
- if (isHorizontal() && l.isVertical()
- && getMin().j<=l.a.j && getMax().j>=l.a.j
- && l.getMin().i<=a.i && l.getMax().i>=a.i ) {
- return new Point(a.i,l.a.j);
- } else if (isVertical() && l.isHorizontal()
- && getMin().i<=l.a.i && getMax().i>=l.a.i
- && l.getMin().j<=a.j && l.getMax().j>=a.j ) {
- return new Point(l.a.i,a.j);
- } else return null;
- }
-
- public Point getMin() {
- if (a.i<b.i || a.j<b.j) return a;
- else return b;
- }
-
- public Point getMax() {
- if (a.i>b.i || a.j>b.j) return a;
- else return b;
- }
-
- public String toString() {
- return a+"-"+b;
- }
-
- public Point a;
- public Point b;
-}