Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mountain;
- import java.util.HashMap;
- import fractal.Fractal;
- import fractal.TurtleGraphics;
- public class Mountain extends Fractal {
- private Point a;
- private Point b;
- private Point c;
- private double dev;
- public Mountain(Point a, Point b, Point c, double dev) {
- this.a = a;
- this.b = b;
- this.c = c;
- this.dev = dev;
- }
- @Override
- public String getTitle() {
- return "Bergsfraktal";
- }
- @Override
- public void draw(TurtleGraphics g) {
- g.penDown();
- fractalTriangle(g, order, a, b, c, dev);
- }
- HashMap<Side, Point> sidor = new HashMap<Side, Point>();
- private void fractalTriangle(TurtleGraphics g, int order, Point a, Point b, Point c, double dev) {
- g.penUp();
- g.forwardTo(c.getX(), c.getY());
- g.penDown();
- if (order == 0) {
- g.forwardTo(a.getX(), a.getY());
- g.forwardTo(b.getX(), b.getY());
- g.forwardTo(c.getX(), c.getY());
- } else {
- Point midA = getMid(a,b,dev);
- Point midB = getMid(b,c,dev);
- Point midC = getMid(c,a,dev);
- fractalTriangle(g, order-1, midA, midB, midC, dev/2);
- fractalTriangle(g, order-1, a, midA, midC, dev/2);
- fractalTriangle(g, order-1, midA, b, midB, dev/2);
- fractalTriangle(g, order-1, midC, midB, c, dev/2);
- }
- }
- private Point getMid(Point e, Point f, double dev) {
- Side sida = new Side(e, f);
- if (sidor.containsKey(sida)) {
- Point temp = sidor.get(sida);
- return temp;
- } else {
- double rand = RandomUtilities.randFunc(dev);
- Point mitt = new Point((e.getX()+f.getX())/2, (e.getY()+f.getY())/2 + (int)rand);
- sidor.put(sida, mitt);
- return mitt;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement