コード例 #1
0
  public static Point2D.Double pointBetween(Point2D.Double p, Point2D.Double p2, double pos) {

    Point2D.Double n =
        new Point2D.Double(
            p.getX() * (1 - pos) + p2.getX() * (pos), p.getY() * (1 - pos) + p2.getY() * (pos));

    return n;
  }
コード例 #2
0
  public static int closest(Point2D.Double[] BTS, Point2D.Double p) {

    double[] dist = new double[BTS.length];
    int min = 0;
    for (int i = 0; i < BTS.length; i++) {
      dist[i] = distanceSq(BTS[i].getX(), BTS[i].getY(), p.getX(), p.getY());
      if (dist[i] < dist[min]) min = i;
    }
    // System.out.println(dist[min] + " " + min);

    return min;
  }
コード例 #3
0
  /**
   * Method to get the coordinates of the enclosing rectangle after this transformation is applied
   * to the current picture
   *
   * @return the enclosing rectangle
   */
  public Rectangle2D getTransformEnclosingRect(AffineTransform trans) {
    int width = getWidth();
    int height = getHeight();
    double maxX = width - 1;
    double maxY = height - 1;
    double minX, minY;
    Point2D.Double p1 = new Point2D.Double(0, 0);
    Point2D.Double p2 = new Point2D.Double(maxX, 0);
    Point2D.Double p3 = new Point2D.Double(maxX, maxY);
    Point2D.Double p4 = new Point2D.Double(0, maxY);
    Point2D.Double result = new Point2D.Double(0, 0);
    Rectangle2D.Double rect = null;

    // get the new points and min x and y and max x and y
    trans.deltaTransform(p1, result);
    minX = result.getX();
    maxX = result.getX();
    minY = result.getY();
    maxY = result.getY();
    trans.deltaTransform(p2, result);
    minX = Math.min(minX, result.getX());
    maxX = Math.max(maxX, result.getX());
    minY = Math.min(minY, result.getY());
    maxY = Math.max(maxY, result.getY());
    trans.deltaTransform(p3, result);
    minX = Math.min(minX, result.getX());
    maxX = Math.max(maxX, result.getX());
    minY = Math.min(minY, result.getY());
    maxY = Math.max(maxY, result.getY());
    trans.deltaTransform(p4, result);
    minX = Math.min(minX, result.getX());
    maxX = Math.max(maxX, result.getX());
    minY = Math.min(minY, result.getY());
    maxY = Math.max(maxY, result.getY());

    // create the bounding rectangle to return
    rect = new Rectangle2D.Double(minX, minY, maxX - minX + 1, maxY - minY + 1);
    return rect;
  }
コード例 #4
0
 /**
  * Write the given text string in the current font, centered at <location>.
  *
  * @param location the Point at the center of the text
  * @param s the text
  */
 public static void text(Point2D.Double location, String s) {
   text(location.getX(), location.getY(), s);
 }
コード例 #5
0
  /**
   * Draw a filled rectangle of given half width and half height, centred at <location> and rotated
   * by d degrees.
   *
   * @param location the Point at the centre of the rectangle
   * @param halfWidth is half the width of the rectangle
   * @param halfHeight is half the height of the rectangle
   * @param degrees is the rotation of the rectangle with 3 o'clock being 0 degrees and 12 o'clock
   *     being 270 degrees
   * @throws RuntimeException if halfWidth or halfHeight is negative
   */
  public static void filledAngledRectangle(
      Point2D.Double location, double halfWidth, double halfHeight, double degrees) {

    filledAngledRectangle(location.getX(), location.getY(), halfWidth, halfHeight, degrees);
  }
コード例 #6
0
 /**
  * Draw a filled diamond of side length 2r, centred at <location>.
  *
  * @param location the Point at the centre of the square
  * @param r radius is half the length of any side of the diamond
  * @throws RuntimeException if r is negative
  */
 public static void filledDiamond(Point2D.Double location, double r) {
   filledDiamond(location.getX(), location.getY(), r);
 }
コード例 #7
0
 /**
  * Draw a filled square of side length 2r, centred at <location>.
  *
  * @param location the Point at the centre of the square
  * @param r radius is half the length of any side of the square
  * @throws RuntimeException if r is negative
  */
 public static void filledSquare(Point2D.Double location, double r) {
   filledSquare(location.getX(), location.getY(), r);
 }
コード例 #8
0
 /**
  * Draw a circle of radius r, centred at <location>.
  *
  * @param location the Point at the centre of the circle
  * @param r the radius of the circle
  * @throws RuntimeException if the radius of the circle is negative
  */
 public static void circle(Point2D.Double location, double r) {
   circle(location.getX(), location.getY(), r);
 }