예제 #1
0
  /*
   * (non-Javadoc)
   *
   * @see org.math.plot.render.AbstractDrawer#fillPloygon(double[][])
   */
  public void fillPolygon(float alpha, double[]... pC) {
    int[][] c = new int[pC.length][2];
    for (int i = 0; i < pC.length; i++) {
      c[i] = projection.screenProjection(pC[i]);
    }

    int minx = c[0][0], miny = c[0][1], maxx = c[0][0] + 1, maxy = c[0][1] + 1;
    int[] x = new int[c.length];
    for (int i = 0; i < c.length; i++) {
      x[i] = c[i][0];
      minx = FastMath.min(minx, x[i]);
      maxx = FastMath.max(maxx, x[i]);
    }
    int[] y = new int[c.length];
    for (int i = 0; i < c.length; i++) {
      y[i] = c[i][1];
      miny = FastMath.min(miny, y[i]);
      maxy = FastMath.max(maxy, y[i]);
    }
    if (comp2D.hitClip(minx, miny, maxx - minx, maxy - miny)) {
      Composite cs = comp2D.getComposite();
      comp2D.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
      comp2D.fillPolygon(x, y, c.length);
      comp2D.setComposite(cs);
    }
  }
예제 #2
0
  /*
   * (non-Javadoc)
   *
   * @see org.math.plot.render.AbstractDrawer#drawPloygon(double[][])
   */
  public void drawPolygon(double[]... pC) {
    int[][] c = new int[pC.length][2];
    for (int i = 0; i < pC.length; i++) {
      c[i] = projection.screenProjection(pC[i]);
    }

    int minx = c[0][0], miny = c[0][1], maxx = c[0][0] + 1, maxy = c[0][1] + 1;
    int[] x = new int[c.length];
    for (int i = 0; i < c.length; i++) {
      x[i] = c[i][0];
      minx = FastMath.min(minx, x[i]);
      maxx = FastMath.max(maxx, x[i]);
    }
    int[] y = new int[c.length];
    for (int i = 0; i < c.length; i++) {
      y[i] = c[i][1];
      miny = FastMath.min(miny, y[i]);
      maxy = FastMath.max(maxy, y[i]);
    }

    if (comp2D.hitClip(minx, miny, maxx - minx, maxy - miny)) {
      comp2D.drawPolygon(x, y, c.length);
    }
  }
예제 #3
0
  private void drawLine(int[]... c) {
    int minx = c[0][0], miny = c[0][1], maxx = c[0][0] + 1, maxy = c[0][1] + 1;
    int[] x = new int[c.length];
    for (int i = 0; i < c.length; i++) {
      x[i] = c[i][0];
      minx = FastMath.min(minx, x[i]);
      maxx = FastMath.max(maxx, x[i]);
    }
    int[] y = new int[c.length];
    for (int i = 0; i < c.length; i++) {
      y[i] = c[i][1];
      miny = FastMath.min(miny, y[i]);
      maxy = FastMath.max(maxy, y[i]);
    }

    if (comp2D.hitClip(minx, miny, maxx - minx, maxy - miny)) {
      Stroke s = null;
      switch (line_type) {
        case CONTINOUS_LINE:
          s = new BasicStroke(line_width, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);
          break;
        case DOTTED_LINE:
          s =
              new BasicStroke(
                  line_width,
                  BasicStroke.CAP_BUTT,
                  BasicStroke.JOIN_ROUND,
                  1f,
                  new float[] {2f},
                  0f);
          break;
      }
      comp2D.setStroke(s);
      comp2D.drawPolyline(x, y, c.length);
    }
  }