001package org.vishia.gral.ifc;
002
003import org.vishia.gral.base.GralPos;
004
005/**A GralPoint contains 2 or 3 float values for a point.
006 * The unit of float is 1 grid unit like {@link GralPos}. It means, a figure described with this points
007 * is shown in the correct size. Fractional parts of float determines fine positions.
008 * The third dimension can be used for 3-dimensional figures.
009 * @author Hartmut Schorrig
010 *
011 */
012public class GralPoint
013{
014  /**Version, history and license.
015   * <ul>
016   * <li>2011-06-00 Hartmut created
017   * </ul>
018   * 
019   * <b>Copyright/Copyleft</b>:<br>
020   * For this source the LGPL Lesser General Public License,
021   * published by the Free Software Foundation is valid.
022   * It means:
023   * <ol>
024   * <li> You can use this source without any restriction for any desired purpose.
025   * <li> You can redistribute copies of this source to everybody.
026   * <li> Every user of this source, also the user of redistribute copies
027   *    with or without payment, must accept this license for further using.
028   * <li> But the LPGL is not appropriate for a whole software product,
029   *    if this source is only a part of them. It means, the user
030   *    must publish this part of source,
031   *    but doesn't need to publish the whole source of the own product.
032   * <li> You can study and modify (improve) this source
033   *    for own using or for redistribution, but you have to license the
034   *    modified sources likewise under this LGPL Lesser General Public License.
035   *    You mustn't delete this Copyright/Copyleft inscription in this source file.
036   * </ol>
037   * If you intent to use this source without publishing its usage, you can get
038   * a second license subscribing a special contract with the author. 
039   * 
040   * @author Hartmut Schorrig = hartmut.schorrig@vishia.de
041   */
042  public static final int version = 20120422;
043
044  public final float x,y,z;
045
046  public GralPoint(float x, float y)
047  { this.x = x; this.y = y; this.z = Float.NaN;
048  }
049  
050  public GralPoint(float x, float y, float z)
051  { this.x = x; this.y = y; this.z = z;
052  }
053  
054  @Override public String toString(){
055    if(z == Float.NaN) return "Point(" + x + ":" + y + ")";
056    else return "Point(" + x + ":" + y  + ":" + z + ")";
057  }
058  
059}