Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2014
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. //клас для точки
  2. class point
  3. {
  4. float x, y;
  5.  
  6. point()
  7. {
  8. x = 0; y = 0;
  9. }
  10.  
  11. point(float px, float py)
  12. {
  13. x = px; y = py;
  14. }
  15. }
  16. // створюємо точки для початкового відрізку
  17. point s1 = new point(width / 2, 680), s2 = new point(width / 2, 580);
  18. void setup() {
  19. size(800, 800);
  20. frame.setResizable(true);
  21. }
  22.  
  23. void draw() {
  24. //ставимо відрізок на центр вікна по горизонталі
  25. point s1 = new point(width / 2, 680), s2 = new point(width / 2, 580);
  26. background(0);
  27. line(s1.x, s1.y, s2.x, s2.y); //малюєм відрізок
  28. branch(s1, s2, 4); //рекурсивна функція для фрактала
  29. }
  30.  
  31.  
  32. void branch(point p1, point p2, int n)
  33. {
  34. if (n!=0){
  35. point p3 = new point(), p4 = new point(), p5 = new point(), p6 = new point();
  36.  
  37. float coef = 0.75; //коефіцієнт для зміни довжини відрізка
  38. //задаємо відрізки для генератора за допомогою формул повороту однієї точки відносно іншої
  39. p3.x = (p2.x-p1.x)*cos(radians(90))*coef - (p2.y-p1.y)*sin(radians(90))*coef + p2.x;
  40. p3.y = (p2.x-p1.x)*sin(radians(90))*coef + (p2.y-p1.y)*cos(radians(90))*coef + p2.y;
  41.  
  42. p4.x = (p2.x-p1.x)*sin(radians(90))*coef + (p2.y-p1.y)*sin(radians(90))*coef + p2.x;
  43. p4.y = -(p2.x-p1.x)*cos(radians(90))*coef + (p2.y-p1.y)*cos(radians(90))*coef + p2.y;
  44. float s = 90;
  45. p5.x = (p4.x-p2.x)*cos(radians(s)) - (p4.y-p2.y)*sin(radians(s)) + p4.x;
  46. p5.y = (p4.x-p2.x)*sin(radians(s)) + (p4.y-p2.y)*cos(radians(s)) + p4.y;
  47. s = -0;
  48. p6.x = (p3.x-p2.x)*sin(radians(s)) + (p3.y-p2.y)*sin(radians(s)) + p3.x;
  49. p6.y = -(p3.x-p2.x)*cos(radians(s)) + (p3.y-p2.y)*cos(radians(s)) + p3.y;
  50.  
  51. stroke(255);
  52. //малюємо ці лінії
  53. line(p2.x, p2.y, p3.x,p3.y);
  54. line(p2.x, p2.y, p4.x,p4.y);
  55. line(p4.x, p4.y, p5.x,p5.y);
  56. line(p3.x, p3.y, p6.x,p6.y);
  57. //викликаємо функцію для кінців генератора
  58. branch(p4, p5, n-1);
  59. branch(p3, p6, n-1);
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement