Advertisement
Guest User

Turtle Graphics/Fractal Library SWI Prolog

a guest
Jun 22nd, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 2.23 KB | None | 0 0
  1. %http://mundotecfacil.blogspot.com/
  2. %SWI Prolog
  3. turtle_init(Color):-
  4.    retractall(turtle(_,_,_)),
  5.    B is 600,
  6.    H is 600,
  7.    B1 is B /2,
  8.    H1 is H / 2,
  9.    W1 is 0,
  10.    assert(turtle(B1, H1, W1)),
  11.    free(@logo),
  12.    new(@logo, picture('Fractals', size(B, H))),
  13.    send(@logo, background(Color)),
  14.    send(@logo, open_centered).
  15.  
  16. turtle_term:-
  17.   retractall(logo/3),
  18.   free(@logo).
  19.  
  20. turtle_drawto(X, Y):-
  21.   retract(turtle(X1, Y1, W)),
  22.   send(@logo, display, new(_, line(X1, Y1, X, Y))),
  23.   assert(turtle(X, Y, W)).
  24.  
  25. turtle_drawRand(L):-
  26.   retract(turtle(X1, Y1, W)),
  27.   X2 is X1 + L*cos(W*pi/180),
  28.   Y2 is Y1 - L*sin(W*pi/180),
  29.   send(@logo, display, new(LINE, line(X1, Y1, X2, Y2))),
  30.   random(1000, 65535, RAND1),
  31.   random(1000, 65535, RAND2),
  32.   random(1000, 65535, RAND3),
  33.   new(C, colour(@default, RAND1, RAND2, RAND3)),
  34.   send(LINE, colour, C),
  35.   assert(turtle(X2, Y2, W)).
  36.  
  37. turtle_draw(L):-
  38.   retract(turtle(X1, Y1, W)),
  39.   X2 is X1 + L*cos(W*pi/180),
  40.   Y2 is Y1 - L*sin(W*pi/180),
  41.   send(@logo, display, new(LINE, line(X1, Y1, X2, Y2))),
  42.   new(C, colour(@default, 0, 0, 0)),
  43.   send(LINE, colour, C),
  44.   assert(turtle(X2, Y2, W)).
  45.  
  46. turtle_moveto(X, Y):-
  47.   retract(turtle(_, _, W)),
  48.   assert(turtle(X, Y, W)).
  49.  
  50. turtle_drawRGB(L,Rojo,Verde,Azul):-
  51.   retract(turtle(X1, Y1, W)),
  52.   X2 is X1 + L*cos(W*pi/180),
  53.   Y2 is Y1 - L*sin(W*pi/180),
  54.   send(@logo, display, new(LINE, line(X1, Y1, X2, Y2))),
  55.   new(C, colour(@default, Rojo, Verde, Azul)),
  56.   send(LINE, colour, C),
  57.   assert(turtle(X2, Y2, W)).
  58.  
  59. turtle_move(L):-
  60.   retract(turtle(X1, Y1, W)),
  61.   X2 is X1 + L*cos(W*pi/180),
  62.   Y2 is Y1 - L*sin(W*pi/180),
  63.   assert(turtle(X2, Y2, W)).
  64.  
  65.  turtle_turn(W):-
  66.   retract(turtle(X, Y, W1)),
  67.   W2 is W1 + W,
  68.   assert(turtle(X, Y, W2)).
  69.  
  70. turtle_turnto(W):-
  71.   retract(turtle(X, Y, _)),
  72.   assert(turtle(X, Y, W)).
  73.  
  74. drCorbatin(0,Largo,Rojo,Verde,Azul):-
  75.   turtle_drawRGB(Largo,Rojo,Verde,Azul).
  76.  
  77. drCorbatin(N,Largo,Rojo,Verde,Azul):-
  78.   Seg is Largo / 4,
  79.   N1 is N - 1,
  80.   turtle_turn(60),
  81.   drCorbatin(N1,Seg,Rojo,Verde,Azul),
  82.   turtle_turn(-120),
  83.   drCorbatin(N1,Seg,Rojo,Verde,Azul),
  84.   drCorbatin(N1,Seg,Rojo,Verde,Azul),
  85.   turtle_turn(120),
  86.   drCorbatin(N1,Seg,Rojo,Verde,Azul),
  87.   turtle_turn(-60).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement