Sweep-Line-Algorithm
100 строк · 2.0 Кб
1/**
2* Point class.
3*/
4public class Point implements Comparable<Point> {5private final long x;6private final long y;7private boolean left = false;8
9private Segment segment;10
11/**12* Gets {@link Segment} that contains this {@link Point}.
13*
14* @return the segment
15*/
16public Segment getSegment() {17return segment;18}19
20/**21* Sets {@link Segment} that contains this {@link Point}.
22*
23* @param segment the segment
24*/
25public void setSegment(Segment segment) {26this.segment = segment;27}28
29/**30* Instantiates a new {@link Point}.
31*
32* @param x the x coordinate
33* @param y the y coordinate
34*/
35Point(long x, long y) {36this.x = x;37this.y = y;38}39
40/**41* Instantiates a new {@link Point}.
42*
43* @param x the x coordinate
44* @param y the y coordinate
45* @param left is this {@link Point} left at {@link Segment}
46*/
47Point(long x, long y, boolean left) {48this.x = x;49this.y = y;50this.left = left;51}52
53/**54* Gets x coordinate.
55*
56* @return the x
57*/
58public long getX() {59return x;60}61
62/**63* Gets y coordinate.
64*
65* @return the y
66*/
67public long getY() {68return y;69}70
71@Override72public String toString() {73return String.format("%d %d", x, y);74}75
76/**77* Checks is this {@link Point} left at {@link Segment}.
78*
79* @return {@code true} is this {@link Point} left at {@link Segment}, otherwise {@code false}
80*/
81public boolean isLeft() {82return left;83}84
85/**86* Checks is this {@link Point} right at {@link Segment}.
87*
88* @return {@code true} is this {@link Point} right at {@link Segment}, otherwise {@code false}
89*/
90public boolean isRight() {91return !isLeft();92}93
94@Override95public int compareTo(Point other) {96return Long.compare(getX(), other.getX());97}98
99
100}
101