001         package com.croftsoft.core.math;
002    
003         import java.io.Serializable;
004    
005         /*********************************************************************
006         * A mutable point in three-dimensional real space (x, y, and z).
007         *
008         * @version
009         *   2003-03-30
010         * @since
011         *   2002-02-06
012         * @author
013         *   <a href="http://croftsoft.com/">David Wallace Croft</a>
014         * @deprecated
015         *   Use Point3DD instead.
016         *********************************************************************/
017    
018         public final class  Point3d
019           implements Cloneable, Serializable
020         //////////////////////////////////////////////////////////////////////
021         //////////////////////////////////////////////////////////////////////
022         {
023    
024         private static final long  serialVersionUID = 1L;
025    
026         private double  x;
027    
028         private double  y;
029    
030         private double  z;
031    
032         //////////////////////////////////////////////////////////////////////
033         //////////////////////////////////////////////////////////////////////
034    
035         public static boolean  equivalent (
036           Point3d  aPoint3d,
037           Point3d  bPoint3d )
038         //////////////////////////////////////////////////////////////////////
039         {
040           if ( aPoint3d == null )
041           {
042             return bPoint3d == null;
043           }
044           else
045           {
046             return aPoint3d.equals ( bPoint3d );
047           }
048         }
049    
050         //////////////////////////////////////////////////////////////////////
051         //////////////////////////////////////////////////////////////////////
052    
053         public  Point3d (
054           double  x,
055           double  y,
056           double  z )
057         //////////////////////////////////////////////////////////////////////
058         {
059           this.x = x;
060    
061           this.y = y;
062    
063           this.z = z;
064         }
065    
066         public  Point3d ( )
067         //////////////////////////////////////////////////////////////////////
068         {
069           this ( 0.0, 0.0, 0.0 );
070         }
071    
072         //////////////////////////////////////////////////////////////////////
073         //////////////////////////////////////////////////////////////////////
074    
075         public double  getX ( ) { return x; }
076    
077         public double  getY ( ) { return y; }
078    
079         public double  getZ ( ) { return z; }
080    
081         //////////////////////////////////////////////////////////////////////
082         //////////////////////////////////////////////////////////////////////
083    
084         public void  setX ( double  x ) { this.x = x; }
085    
086         public void  setY ( double  y ) { this.y = y; }
087    
088         public void  setZ ( double  z ) { this.z = z; }
089    
090         //////////////////////////////////////////////////////////////////////
091         //////////////////////////////////////////////////////////////////////
092    
093         public boolean  equals ( Object  other )
094         //////////////////////////////////////////////////////////////////////
095         {
096           if ( other == null )
097           {
098             return false;
099           }
100    
101           if ( !this.getClass ( ).equals ( other.getClass ( ) ) )
102           {
103             return false;
104           }
105    
106           Point3d  that = ( Point3d ) other;
107    
108           return ( this.x == that.x )
109             &&   ( this.y == that.y )
110             &&   ( this.z == that.z );
111         }
112    
113         public int  hashCode ( )
114         //////////////////////////////////////////////////////////////////////
115         {
116           // This might be a poor choice for a hash code algorithm.
117    
118           return new Double ( x ).hashCode ( )
119                ^ new Double ( y ).hashCode ( )
120                ^ new Double ( z ).hashCode ( );
121         }
122    
123         public Object  clone ( )
124         //////////////////////////////////////////////////////////////////////
125         {
126           try
127           {
128             return super.clone ( );
129           }
130           catch ( CloneNotSupportedException  ex )
131           {
132             // This will never happen.
133    
134             throw new RuntimeException ( );
135           }
136         }
137    
138         public String  toString ( )
139         //////////////////////////////////////////////////////////////////////
140         {
141           return "<Point3d>"
142                +   "<x>" + x + "</x>"
143                +   "<y>" + y + "</y>"
144                +   "<z>" + z + "</z>"
145                + "</Point3d>";
146         }
147    
148         //////////////////////////////////////////////////////////////////////
149         //////////////////////////////////////////////////////////////////////
150         }