prolo5x


/* cerchio1.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna Cerchio con DOT  */
domains
  intero= integer
  
Predicates
  disegna(Intero,Intero,Intero)
  assi
  fine    
Goal 
  graphics(1,7,1),attribute(2),
  /* prova 1,2,3,4,5 per primo parametro */
  
  write("\t\tCERCHIO\n\n"),
  assi,
  disegna(16000,1000,360),
  fine.
Clauses
  assi:-
  RH1=16000,CH1=1000,RH2=16000,CH2=32000,
  RV1=1000,CV1=16000,RV2=30000,CV2=16000,
  line(RH1,CH1,RH2,CH2,7),
  line(RV1,CV1,RV2,CV2,7).
  
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore1=2,
  R=16000,
  Scalax=8000,Scalay=6000,
  Seno=R+round(Scalax*sin(N*3.14/180)),
  Coseno=R+round(Scalay*cos(N*3.14/180)),
  dot(Seno,Coseno,Colore1),
  N2=N-1,
  disegna(Riga1,Colonna1,N2).
  disegna(_,_,_).
  fine:- sound(100,500),
  cursor(19,2).



/* cerchio2.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna Cerchio con Line  */
domains
  intero= integer
  
Predicates
  disegna(Intero,Intero,Intero)
  assi
  fine    
Goal 
  graphics(1,7,1),attribute(2),
  /* prova 1,2,3,4,5 per primo parametro */
  
  write("\t\tCERCHIO\n\n"),
  assi,
  disegna(16000,1000,360),
  fine.
Clauses
  assi:-
  RH1=16000,CH1=1000,RH2=16000,CH2=32000,
  RV1=1000,CV1=16000,RV2=30000,CV2=16000,
  line(RH1,CH1,RH2,CH2,7),
  line(RV1,CV1,RV2,CV2,7).
  
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore1=2,
  R=16000,
  C=16000,
  Scalax=8000,Scalay=6000,
  Seno=R+round(Scalax*sin(N*3.14/180)),
  Coseno=R+round(Scalay*cos(N*3.14/180)),
  line(R,C,Seno,Coseno,Colore1),
  N2=N-1,
  disegna(Riga1,Colonna1,N2).
  disegna(_,_,_).
  fine:- sound(100,500),
  cursor(19,2).


/* coseno1.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna COSINUSOIDE con LINE e DOT */
domains
  intero= integer
Predicates
  disegna(Intero,Intero,Intero)
Goal 
  graphics(1,7,1),attribute(1),
  line(16000,1000,16000,32000,7),
  disegna(16000,1000,1440).
Clauses
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore=2,
  dot(Riga1,Colonna1,Colore),
  Riga2=Riga1+100*cos(N*3.14/180),
  Colonna2=Colonna1+20,
  N2=N-1,
  disegna(Riga2,Colonna2,N2).

/* coseno2.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna COSINUSOIDE piena con LINE  */
domains
  intero= integer
Predicates
  disegna(Intero,Intero,Intero)
Goal 
  graphics(1,7,1),attribute(1),
  write("\t\tCosinusoide\n\n"),
  line(16000,1000,16000,32000,7),
  line(1000,1000,30000,1000,7),
  disegna(16000,1000,1440).
Clauses
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore=2,
  line(16000,Colonna1,Riga1,Colonna1,Colore),
  Riga2=Riga1+100*cos(N*3.14/180),
  Colonna2=Colonna1+20,
  N2=N-1,
  disegna(Riga2,Colonna2,N2).
  disegna(_,_,_).

tipo frattale
/* curve.pro modifica di originale D_curve */
check_determ
/* 
  Questo Š un programma di grafica, che richiede una scheda colore CGA o EGA.  
*/
database
  radice2(real)
predicates
  drago(real, integer, integer)
  int_real(integer, real)
goal
  R = sqrt(2.0),
  assertz(radice2(R)),
  graphics(1,2,112), 
  penpos(4500, 18000, 180),
  drago(900.0, 0, -1).
  /* modificare originale 15000.0 con numero minore
  per rendere piu' ridotto e veloce disegno */
clauses
  drago(L, A, Segno) :-
  /* modificare originale 150.0 con altro
  numero come 15.0 */
    L > 20.0,
    radice2(R),!,
    L1 = L / R,
    A1 = A + 45 * Segno, A2 = A - 45 * Segno,
    !,drago(L1, A1, 1),!,drago(L1, A2, -1).
  drago(L, A, _) :-
    penpos(X, Y, _),
    penpos(X, Y, A),
    random(CR), C=CR*7+1, int_real(Co,C),
    pencolor(Co),   
    int_real(Len, L),
    forward(Len).
  int_real(I, R) :-
     I=R.