View Javadoc
1   package com.github.davidmoten.rtree.geometry.internal;
2   
3   import com.github.davidmoten.rtree.geometry.Geometries;
4   import com.github.davidmoten.rtree.geometry.Geometry;
5   import com.github.davidmoten.rtree.geometry.Point;
6   import com.github.davidmoten.rtree.geometry.Rectangle;
7   
8   public final class PointDouble implements Point {
9   
10      private final double x;
11      private final double y;
12  
13      private PointDouble(double x, double y) {
14          this.x = x;
15          this.y = y;
16      }
17  
18      public static PointDouble create(double x, double y) {
19          return new PointDouble(x, y);
20      }
21  
22      @Override
23      public Rectangle mbr() {
24          return this;
25      }
26  
27      @Override
28      public double distance(Rectangle r) {
29          return GeometryUtil.distance(x, y, r);
30      }
31  
32      @Override
33      public boolean intersects(Rectangle r) {
34          return r.x1() <= x && x <= r.x2() && r.y1() <= y && y <= r.y2();
35      }
36  
37      @Override
38      public double x() {
39          return x;
40      }
41  
42      @Override
43      public double y() {
44          return y;
45      }
46  
47      @Override
48      public String toString() {
49          return "Point [x=" + x() + ", y=" + y() + "]";
50      }
51  
52      @Override
53      public Geometry geometry() {
54          return this;
55      }
56  
57      @Override
58      public double x1() {
59          return x;
60      }
61  
62      @Override
63      public double y1() {
64          return y;
65      }
66  
67      @Override
68      public double x2() {
69          return x;
70      }
71  
72      @Override
73      public double y2() {
74          return y;
75      }
76  
77      @Override
78      public double area() {
79          return 0;
80      }
81  
82      @Override
83      public Rectangle add(Rectangle r) {
84          return Geometries.rectangle(Math.min(x, r.x1()), Math.min(y, r.y1()), Math.max(x, r.x2()),
85                  Math.max(y, r.y2()));
86      }
87  
88      @Override
89      public boolean contains(double x, double y) {
90          return this.x == x && this.y == y;
91      }
92  
93      @Override
94      public double intersectionArea(Rectangle r) {
95          return 0;
96      }
97  
98      @Override
99      public double perimeter() {
100         return 0;
101     }
102 
103     @Override
104     public boolean isDoublePrecision() {
105         return true;
106     }
107 
108     @Override
109     public int hashCode() {
110         final int prime = 31;
111         int result = 1;
112         long temp;
113         temp = Double.doubleToLongBits(x);
114         result = prime * result + (int) (temp ^ (temp >>> 32));
115         temp = Double.doubleToLongBits(y);
116         result = prime * result + (int) (temp ^ (temp >>> 32));
117         return result;
118     }
119 
120     @Override
121     public boolean equals(Object obj) {
122         if (this == obj)
123             return true;
124         if (obj == null)
125             return false;
126         if (getClass() != obj.getClass())
127             return false;
128         PointDouble other = (PointDouble) obj;
129         if (Double.doubleToLongBits(x) != Double.doubleToLongBits(other.x))
130             return false;
131         if (Double.doubleToLongBits(y) != Double.doubleToLongBits(other.y))
132             return false;
133         return true;
134     }
135 
136 }