close all
clear all
clc

% Punti del poligono di controllo
punti = [0 0 1 1 2 2 3 3 4 4 ; 0 1 1 0 0 1 1 0 0 1];
np = size(punti,2);

figure(1);
h = plot(punti(1,:),punti(2,:),'ro--');
set(h,'LineWidth',2);
axis([-0.1 4.1,-0.1,1.1])


% Interpolazione agli estremi
p = 3;
[Cx,Cy] = BSplineCurve(p,punti);

% rotazione di 90 gradi
theta = pi/2;
R90 = [cos(theta) -sin(theta);sin(theta) cos(theta) ]
punti90 = R90*punti

p = 3;
[Cx90,Cy90] = BSplineCurve(p,punti90);


figure(2);
subplot(1,2,1);
h = plot(punti(1,:),punti(2,:),'ro--');
set(h,'LineWidth',2);
axis([-0.1 4.1,-0.1,1.1])
hold on;
h = plot(Cx,Cy,'b');
set(h,'LineWidth',2);
hold off;

subplot(1,2,2);
h = plot(punti90(1,:),punti90(2,:),'ro--');
set(h,'LineWidth',2);
axis([-1.1,0.1,-0.1 4.1,])
hold on;
h = plot(Cx90,Cy90,'b');
set(h,'LineWidth',2);
hold off;


% MODIFICA LOCALE
p = 2;
[Cx,Cy] = BSplineCurve(p,punti);

puntiMod = punti; 
puntiMod(2,6)=2;

p = 2;
[CxM,CyM] = BSplineCurve(p,puntiMod);


figure(3);
h = plot(puntiMod(1,:),puntiMod(2,:),'mo--');
set(h,'LineWidth',2);
axis([-0.1 4.1,-0.1,2.1])
hold on;
h = plot(punti(1,:),punti(2,:),'ro--');
set(h,'LineWidth',2);
h = plot(CxM,CyM,'g');
set(h,'LineWidth',2);
h = plot(Cx,Cy,'b');
set(h,'LineWidth',2);
hold off;

