private void pan(final Zoomable dst, final double rx, final double ry, final int dt) { if (dst == null) return; final RectangularShape src = dst.getZoom(); zoom( dst, new Rectangle2D.Double( src.getX() + src.getWidth() * rx, src.getY() + src.getHeight() * ry, src.getWidth(), src.getHeight()), dt); }
/** * Splits a bar into subregions (elsewhere, these subregions will have different gradients applied * to them). * * @param bar the bar shape. * @param a the first division. * @param b the second division. * @param c the third division. * @return An array containing four subregions. */ private Rectangle2D[] splitHorizontalBar(RectangularShape bar, double a, double b, double c) { Rectangle2D[] result = new Rectangle2D[4]; double y0 = bar.getMinY(); double y1 = Math.rint(y0 + (bar.getHeight() * a)); double y2 = Math.rint(y0 + (bar.getHeight() * b)); double y3 = Math.rint(y0 + (bar.getHeight() * c)); result[0] = new Rectangle2D.Double(bar.getMinX(), bar.getMinY(), bar.getWidth(), y1 - y0); result[1] = new Rectangle2D.Double(bar.getMinX(), y1, bar.getWidth(), y2 - y1); result[2] = new Rectangle2D.Double(bar.getMinX(), y2, bar.getWidth(), y3 - y2); result[3] = new Rectangle2D.Double(bar.getMinX(), y3, bar.getWidth(), bar.getMaxY() - y3); return result; }
/** * Splits a bar into subregions (elsewhere, these subregions will have different gradients applied * to them). * * @param bar the bar shape. * @param a the first division. * @param b the second division. * @param c the third division. * @return An array containing four subregions. */ private Rectangle2D[] splitVerticalBar(RectangularShape bar, double a, double b, double c) { Rectangle2D[] result = new Rectangle2D[4]; double x0 = bar.getMinX(); double x1 = Math.rint(x0 + (bar.getWidth() * a)); double x2 = Math.rint(x0 + (bar.getWidth() * b)); double x3 = Math.rint(x0 + (bar.getWidth() * c)); result[0] = new Rectangle2D.Double(bar.getMinX(), bar.getMinY(), x1 - x0, bar.getHeight()); result[1] = new Rectangle2D.Double(x1, bar.getMinY(), x2 - x1, bar.getHeight()); result[2] = new Rectangle2D.Double(x2, bar.getMinY(), x3 - x2, bar.getHeight()); result[3] = new Rectangle2D.Double(x3, bar.getMinY(), bar.getMaxX() - x3, bar.getHeight()); return result; }
void generateBackground(int size) { backgroundWidth = 100; int spacing = backgroundWidth; int id = 0; for (int i = 0; i < bounds.getWidth() / spacing; i++) { background[id][0] = spacing * (i + 1) - bounds.getWidth() / 2; background[id][1] = -bounds.getHeight() / 2; background[id][2] = spacing * (i + 1) - bounds.getWidth() / 2; background[id][3] = 0; background[id][4] = spacing * (i + 1) - bounds.getWidth() / 2; background[id][5] = bounds.getHeight(); background[id][6] = rand.nextInt(3) - 1; background[id][7] = rand.nextInt(3) - 1; background[id][8] = 1; id++; } for (int i = 0; i < bounds.getHeight() / spacing; i++) { background[id][0] = -bounds.getHeight() / 2; background[id][1] = spacing * (i + 1) - bounds.getHeight() / 2; background[id][2] = 0; background[id][3] = spacing * (i + 1) - bounds.getWidth() / 2; background[id][4] = bounds.getWidth(); background[id][5] = spacing * (i + 1) - bounds.getHeight() / 2; background[id][6] = rand.nextInt(3) - 1; background[id][7] = rand.nextInt(3) - 1; background[id][8] = 1; id++; } }
private void zoom(final Zoomable dst, final Point2D center, final double ratio, final int dt) { if (dst == null) return; final RectangularShape src = dst.getZoom(); final double w = src.getWidth() * ratio; final double h = src.getHeight() * ratio; final double cx, cy; if (center == null) { cx = src.getCenterX(); cy = src.getCenterY(); } else { cx = center.getX(); cy = center.getY(); } zoom(dst, new Rectangle2D.Double(cx - w / 2, cy - h / 2, Math.abs(w), Math.abs(h)), dt); }
boolean render(Graphics2D map) { double diff = (System.nanoTime() - created) / 1000 / 1000; if (diff > timeAlive) return true; map.setColor(new Color(100, 100, 100, (int) (255 - (diff / timeAlive * 250)))); for (int i = 0; i < particles.length; i++) { RectangularShape tmp = (RectangularShape) particles[i][0]; double xD = (Double) particles[i][1]; double yD = (Double) particles[i][2]; tmp.setFrame( (double) tmp.getX() + xD / delta, (double) tmp.getY() + yD / delta, tmp.getWidth(), tmp.getHeight()); map.draw(tmp); } return false; }