Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. package mountain;
  2.  
  3. import java.util.HashMap;
  4.  
  5. import fractal.Fractal;
  6. import fractal.TurtleGraphics;
  7.  
  8. public class Mountain extends Fractal {
  9. private Point a;
  10. private Point b;
  11. private Point c;
  12. private double dev;
  13.  
  14. public Mountain(Point a, Point b, Point c, double dev) {
  15. this.a = a;
  16. this.b = b;
  17. this.c = c;
  18. this.dev = dev;
  19. }
  20.  
  21. @Override
  22. public String getTitle() {
  23. return "Bergsfraktal";
  24. }
  25.  
  26. @Override
  27. public void draw(TurtleGraphics g) {
  28. g.penDown();
  29. fractalTriangle(g, order, a, b, c, dev);
  30. }
  31.  
  32. HashMap<Side, Point> sidor = new HashMap<Side, Point>();
  33.  
  34. private void fractalTriangle(TurtleGraphics g, int order, Point a, Point b, Point c, double dev) {
  35. g.penUp();
  36. g.forwardTo(c.getX(), c.getY());
  37. g.penDown();
  38. if (order == 0) {
  39. g.forwardTo(a.getX(), a.getY());
  40. g.forwardTo(b.getX(), b.getY());
  41. g.forwardTo(c.getX(), c.getY());
  42. } else {
  43.  
  44. Point midA = getMid(a,b,dev);
  45. Point midB = getMid(b,c,dev);
  46. Point midC = getMid(c,a,dev);
  47.  
  48. fractalTriangle(g, order-1, midA, midB, midC, dev/2);
  49. fractalTriangle(g, order-1, a, midA, midC, dev/2);
  50. fractalTriangle(g, order-1, midA, b, midB, dev/2);
  51. fractalTriangle(g, order-1, midC, midB, c, dev/2);
  52. }
  53. }
  54.  
  55. private Point getMid(Point e, Point f, double dev) {
  56. Side sida = new Side(e, f);
  57. if (sidor.containsKey(sida)) {
  58. Point temp = sidor.get(sida);
  59. return temp;
  60. } else {
  61. double rand = RandomUtilities.randFunc(dev);
  62. Point mitt = new Point((e.getX()+f.getX())/2, (e.getY()+f.getY())/2 + (int)rand);
  63. sidor.put(sida, mitt);
  64. return mitt;
  65. }
  66. }
  67.  
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement