/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * JavaWorld Library, Copyright 2011 Bryan Chadwick * * * * FILE: ./examples/DisplayTest.java * * * * This file is part of JavaWorld. * * * * JavaWorld is free software: you can redistribute it and/or * * modify it under the terms of the GNU General Public License * * as published by the Free Software Foundation, either version * * 3 of the License, or (at your option) any later version. * * * * JavaWorld is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with JavaWorld. If not, see <http://www.gnu.org/licenses/>. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ package examples; import world.World; import image.*; public class DisplayTest{ public static void main(String[] args){ //World.display(new DisplayTest().simpleImage()); //World.display(new DisplayTest().circleStart()); //World.display(new DisplayTest().spiralStart()); World.display(new DisplayTest().treeStart()); } // Create a simple Star in the empty Scene Image simpleImage(){ return new EmptyScene(200, 200) .placeImage(new Overlay(new Star(50, 30, 10, "outline", "black"), new Star(50, 30, 10, "solid", "green")), 100, 100); } // The next size... shrinks the circles double nextSize(double size){ return size*2/3; } // Start off the spiral with the right angle, Scene circleStart(){ return this.circles(100, 60, new EmptyScene(440, 160)); } // Create a scene by drawing decreasing circles into the given Scene Scene circles(double x, double size, Scene scn){ if(size < 1){ return scn; }else{ return this.circles(x+size+nextSize(size), nextSize(size), scn) .placeImage(new Circle(size, "outline", "blue"), x, 80); } } // Start off the spiral with a decent x/y/angle Scene spiralStart(){ return this.spiral(100, 80, -Math.PI/10, 60, new EmptyScene(400, 160)); } // Create a shrinking spiral at the given x, y, angle, and size // in the given Scene Scene spiral(double x, double y, double ang, double size, Scene scn){ if(size < 1){ return scn; }else{ return this.spiral(x+(size+nextSize(size))*Math.cos(ang), y+(size+nextSize(size))*Math.sin(ang), ang+Math.PI/10, nextSize(size), scn) .placeImage(new Circle(size, "outline", "blue"), x, y); } } // Add a line of the given len from x/y in the direction of ang to the given Scene Scene putLine(double x, double y, double ang, double len, String color, Scene scn){ return scn.addLine(x, y,x+len*Math.cos(ang), y+len*Math.sin(ang), color); } // Start off the tree Scene treeStart(){ return this.tree(40, 160, 0, 150, new EmptyScene(300, 300)); } // Create a shrinking spiral at the given x, y, angle, and size // in the given Scene Scene tree(double x, double y, double ang, double len, Scene scn){ if(len <= 3){ return this.putLine(x, y, ang, len, "green", scn); }else{ return this.putLine(x, y, ang, len, "brown", this.tree(x + len/3 * Math.cos(ang), y + len/3 * Math.sin(ang), ang + Math.PI/6, 2*len/3, this.tree(x + 2*len/3 * Math.cos(ang), y + 2*len/3 * Math.sin(ang), ang - Math.PI/6, 2*len/3, scn))); } } }