QCAS supporte quasiment l'intégralité des fonctions 2D.
Pour tester, je vous joins la procédure.
Première initialisation:
Code : Tout sélectionner
git clone git://git.tuxfamily.org/gitroot/qcas/qcas.git
cd qcas
qmake qcas.pro
make
./qcas
Pour mettre à jour le code, dans le répertoire "qcas" précédemment créé:
Je vous joins quelques codes de figure à copier-coller:
Exemple 1:
Code : Tout sélectionner
A:=point(1+i);
B:=point(5+2*i,display=quadrant4);
C:=point(3+5*i,display=quadrant1);
s:=segment(A,B);
t:=segment(A,C);
u:=segment(B,C);
display(dash_line+red);
d1:=perpen_bisector(s);
d2:=perpen_bisector(t);
d3:=perpen_bisector(u);
display(solid_line);
O:=single_inter(d1,d2);
circle(O,A-O,display=line_width_4+321);
Exemple 2: (Sierpinski version "attracteurs", quelle rapidité!)
Code : Tout sélectionner
tapis(n):={
local som, j, current,pic;
som:=[[0,0],[1,0],[2,0],[2,1],[2,2],[1,2],[0,2],[0,1]];
som*=150;
current:=som[0];
pic:=[0$n];
for (j;j<n;j++){
current:=(2*som[rand(8)]+current)/3.0;
pic[j]=<pixon(current);
}
return(pic);
}:;
tapis(100000)
Exemple 3: (Sierpinski version récursive)
Code : Tout sélectionner
sierp(p,size,pos):={
local s,som,l,j;
if (p==0) {
return square(pos,pos+size,display=filled);
}
else {
s:=size/3.0;
som:=[0,s,2*s,i*s,2*i*s,s+2*i*s,2*s+2*i*s,2*s+i*s];
l:=[];
for(j:=0;j<length(som);j++){
l:=append(l,sierp(p-1,s,som[j]+pos));
}
return l;
};
}:;
tapis(p):={
sierp(p,9,1+i);
}:;
tapis(3);
Exemple 4: (Sierpinski version itératif)
Code : Tout sélectionner
tapis2(n):={
local j,k,j3,k3,l,compteur,pos;
l:=[0$3^n];
compteur:=0;
for(j:=0;j<3^n;j++){
j3:=convert(j,base,3);
j3:=fillZeros(j3,n);
for(k:=0;k<3^n;k++){
k3:=convert(k,base,3);
k3:=fillZeros(k3,n);
if (isBlack(j3,k3)) {
pos:=j+i*k;
l[compteur]=<square(pos,pos+1,display=filled);
compteur++;
}
}}
l;
}:;
isBlack(a,b):={
local j;
for (j:=0;j<length(a);j++){
if ((a[j]==1)&& (b[j]==1)) return false;
}
return true;
}:;
fillZeros(a,n):={
local nb,j;
nb:=n-length(a);
for(j:=0;j<nb;j++){
a:=append(a,0);
}
return(a);
}:;
tapis2(3);