// Fregio gruppo n. 26 // I componente: Bombelli Federico Carlo - 760858 // II componente: Bonfanti Luca - 760613 // III componente: Bonomi Giacomo - 761916 // Inizio dello script clear; // cancella tutte le varibaili presenti in Scilab l = linspace(-%pi,%pi,250); // generazione vettore equistaziato da -%pi a %pi x = 16*((sin(l))^3); y= 13*cos(l)-5*cos(2*l)-2*cos(3*l)-cos(4*l)+17; // equazioni parametriche per definire // la curva di La Porte (picche) x1=[-2 2 0 -2 ]; y1=[32 32 22 32]; // vettori punti triangolino picche x2=-1*(5.5*((sin(l))^3)); y2=-1*(5.5*cos(l)-1.75*cos(2*l)-0.65*cos(3*l)-0.65*cos(4*l))+15; // equazioni parametriche per definire // la curva di La Porte (cuore) alpha=%pi; // definizione angolo di rotazione rot= [cos(alpha),-sin(alpha); sin(alpha),cos(alpha)]; // definizione equazione di rotazione a=0; b=1; //coefficienti di x e y nell'equazione dell'asse ax+by=0 rif=[-a^(2)+b^(2) ,-2*a*b;-2*a*b,a^(2)-b^(2)]/(a^(2)+b^(2)); // definizione equazione di riflessione punti = [x;y]; punti1 = [x1;y1]; punti2 = [x2;y2]; // definizione punti forme base puntitra =rot*punti; punti1tra =rot*punti1; punti2tra =rot*punti2; // definizione punti forme ruotate puntitra1 =rif*punti; punti1tra1 =rif*punti1; punti2tra1 =rif*punti2; // definizione punti forme riflesse puntitra2 =rot*puntitra1; punti1tra2 =rot*punti1tra1; punti2tra2 =rot*punti2tra1; // definizione punti forme ruotate e riflesse t=72; // definizione valore di spaziatura g=0; // definizione variabile per contatore for k=-2:1:2; // inizio ciclo for con definizione intervallo (k) g=g+1; // funzione di avanzamento progressivo del contatore xtra(g,:)=x+k*t; // funzioni di translazione ytra(g,:)=y+5; // per le forme base x2tra(g,:)=x2+k*t; y2tra(g,:)=y2+5; x1tra(g,:)=x1+k*t; y1tra(g,:)=y1+5; xtra1(g,:)=puntitra(1,:)+k*t; // funzioni di translazione ytra1(g,:)=puntitra(2,:)-5; // per le forme ruotate x1tra1(g,:)=punti1tra(1,:)+k*t; y1tra1(g,:)=punti1tra(2,:)-5; x2tra1(g,:)=punti2tra(1,:)+k*t; y2tra1(g,:)=punti2tra(2,:)-5; xtra2(g,:)=puntitra1(1,:)+36+k*t; // funzioni di translazione ytra2(g,:)=puntitra1(2,:)+36; // per le forme riflesse x1tra2(g,:)=punti1tra1(1,:)+36+k*t; // con valori per allinearle y1tra2(g,:)=punti1tra1(2,:)+36; x2tra2(g,:)=punti2tra1(1,:)+36+k*t; y2tra2(g,:)=punti2tra1(2,:)+36; xtra3(g,:)=puntitra2(1,:)+36+k*t; // funzioni di translazione ytra3(g,:)=puntitra2(2,:)-36; // per le forme riflesse e ruotate x1tra3(g,:)=punti1tra2(1,:)+36+k*t; // con valori per allinearle y1tra3(g,:)=punti1tra2(2,:)-36; x2tra3(g,:)=punti2tra2(1,:)+36+k*t; y2tra3(g,:)=punti2tra2(2,:)-36; end // fine del ciclo for xset("window", 1); // inizializzazione finestra di visualizzazione plot2d(xtra',ytra',axesflag=5,style=5*ones(1,g)); // stampa delle plot2d(x1tra',y1tra',axesflag=5,style=5*ones(1,g)); // forme base plot2d(x2tra',y2tra',axesflag=5,style=1*ones(1,g)); plot2d(xtra1',ytra1',axesflag=5,style=1*ones(1,g)); // stampa delle plot2d(x1tra1',y1tra1',axesflag=5,style=1*ones(1,g)); // forme ruotate plot2d(x2tra1',y2tra1',axesflag=5,style=5*ones(1,g)); plot2d(xtra2',ytra2',axesflag=5,style=1*ones(1,g)); // stampa delle plot2d(x1tra2',y1tra2',axesflag=5,style=1*ones(1,g)); // forme riflesse plot2d(x2tra2',y2tra2',axesflag=5,style=5*ones(1,g)); plot2d(xtra3',ytra3',axesflag=5,style=5*ones(1,g)); // stampa delle plot2d(x1tra3',y1tra3',axesflag=5,style=5*ones(1,g)); // forme riflesse plot2d(x2tra3',y2tra3',axesflag=5,style=1*ones(1,g)); // e ruotate // valori in matrici trasposte per ottenere vettori colonna title('Bombelli, Bonfanti, Bonomi | CUORI E PICCHE'); // titolo ax = get("current_axes"); ax.isoview="on"; // impostazione vista isometrica // Fine dello script