-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathPoint2D.java
More file actions
94 lines (79 loc) · 2.26 KB
/
Point2D.java
File metadata and controls
94 lines (79 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/* Copyright (C) 2014,2015 Maximilian Diedrich
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package de.hu_berlin.informatik.spws2014.ImagePositionLocator;
import java.io.Serializable;
/**
* Representing a pixel position relative to an image origin.
*/
public class Point2D implements Serializable {
private static final long serialVersionUID = 1L;
public int x;
public int y;
public Point2D (int x, int y) {
this.x = x;
this.y = y;
}
public Point2D(double x, double y) {
this.x = (int) x;
this.y = (int) y;
}
public Point2D(FPoint2D a) {
this.x = (int) a.x;
this.y = (int) a.y;
}
public Point2D getOrthogonal(Point2D origin) {
// Turn opposite to GPS as y axis goes down, not up
double xnew = origin.x + (y - origin.y);
double ynew = origin.y - (x - origin.x);
return new Point2D(xnew, ynew);
}
public double getDistance(Point2D a) {
double tmp = Math.sqrt(Math.pow(a.x - this.x, 2) + Math.pow(a.y - this.y, 2));
if (tmp != 0) return tmp;
else return Double.MIN_NORMAL;
}
public double getDistance(FPoint2D inp) {
return this.getDistance(new Point2D(inp));
}
public boolean smallerThan(Point2D inp) {
return (inp.x > this.x) || (inp.y > this.y);
}
public String toString() {
return "P2D<" + x + "," + y + ">";
}
@Override
public boolean equals(Object o) {
if (o == null) {
return false;
}
else if (o.getClass() == Point2D.class) {
return this.equals((Point2D) o);
}
else {
return false;
}
}
public boolean equals(Point2D p) {
if (p == null)
return false;
else
return this.x == p.x && this.y == p.y;
}
@Override
public int hashCode() {
return ((y & 65536) << 16) | (x & 65536);
}
}