001 002 package algo; 003 004 import java.io.Serializable; 005 import java.util.Random; 006 007 /** 008 * A Point in a 2d Graph. 009 * Defined by an x- and y-coordinate and given a number. 010 * @author Heinz Kredel. 011 */ 012 public class Point implements Serializable { 013 014 public final int n; 015 public final double x; 016 public final double y; 017 018 /** 019 * @param n the number of the point 020 * @param x coordinate. 021 * @param y coordinate. 022 */ 023 public Point(int n, double x, double y) { 024 this.n = n; 025 this.x = x; 026 this.y = y; 027 } 028 029 030 /* (non-Javadoc) 031 * @see java.lang.Object#toString() 032 */ 033 public String toString() { 034 return "["+n+"]("+x+","+y+")"; 035 } 036 037 038 /** 039 * @param n the number of the point 040 * @param r a random number generator. 041 * @param m maximal coordinate range. 042 * @return point with random x- and y-coordinates less than m. 043 */ 044 public static Point random(int n, Random r, double m) { 045 return new Point(n, 046 Math.abs(r.nextDouble()*m), 047 Math.abs(r.nextDouble()*m)); 048 } 049 050 /** 051 * @param p a Point to be scaled. 052 * @param scale a scale factor. 053 * @return a point with x- and y-coordinates multiplied by scale. 054 */ 055 public static Point scaleTo(Point p, double scale) { 056 return new Point(p.n, p.x*scale, p.y*scale); 057 } 058 059 }