Merge branch 'JAL-3878_ws-overhaul-3' into with_ws_overhaul-3
[jalview.git] / src / jalview / datamodel / Point.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.datamodel;
22
23 /**
24  * A bean that models an (x, y, z) position in 3-D space
25  */
26 public final class Point
27 {
28   public final float x;
29
30   public final float y;
31
32   public final float z;
33
34   public Point(float xVal, float yVal, float zVal)
35   {
36     x = xVal;
37     y = yVal;
38     z = zVal;
39   }
40
41   /**
42    * toString for convenience of inspection in debugging or logging
43    */
44   @Override
45   public String toString()
46   {
47     return String.format("[%f, %f, %f]", x, y, z);
48   }
49
50   @Override
51   public int hashCode()
52   {
53     final int prime = 31;
54     int result = 1;
55     result = prime * result + Float.floatToIntBits(x);
56     result = prime * result + Float.floatToIntBits(y);
57     result = prime * result + Float.floatToIntBits(z);
58     return result;
59   }
60
61   @Override
62   public boolean equals(Object obj)
63   {
64     if (this == obj)
65     {
66       return true;
67     }
68     if (obj == null)
69     {
70       return false;
71     }
72     if (getClass() != obj.getClass())
73     {
74       return false;
75     }
76     Point other = (Point) obj;
77     if (Float.floatToIntBits(x) != Float.floatToIntBits(other.x))
78     {
79       return false;
80     }
81     if (Float.floatToIntBits(y) != Float.floatToIntBits(other.y))
82     {
83       return false;
84     }
85     if (Float.floatToIntBits(z) != Float.floatToIntBits(other.z))
86     {
87       return false;
88     }
89     return true;
90   }
91 }