% Angewandte Numerik 2, Wintersemester 2017/2018, 20.10.2017
% Uebungsblatt 01, Aufgabe 04: Kubische Splines

% Hauptprogramm:
% Liest die Punkte (also Knoten mit Funktionswerten) ein,
% berechnet einen kubischen Spline durch diese Punkte und
% plottet den berechneten Spline in die Grafik.



%% Initialisierungen

clear;                      % alle Variablen loeschen
close all;                  % alle Grafik-Fenster schliessen
clc;                        % command window loeschen

axis([0 10 0 10])           % darzustellender Bereich fuer x- und y-Achse
hold on

% xy:   Matrix mit den eingegebenen Punkten, fuer jeden Knoten eine Spalte
%       1. Zeile:   die x-Werte
%       2. Zeile:   die zugehörigen y-Werte
% n:    Anzahl der eingegebenen Punkte

xy = [];                    % noch keine Punkte eingegeben
n = 0;  



%% Eingabe der Punkte: Schleife, danach sortieren

fprintf('\n');
fprintf('Angewandte Numerik II, Wintersemester 2017/2018\n');
fprintf('Aufgabe 04: Kubische Splines\n');
fprintf('\n');
fprintf('Eingabe der Punkte mit der linken Maustaste,\n');
fprintf('letzter Punkt mit der rechten Maustaste.\n');
fprintf('\n');

button = 1;                 % linke Maustaste hat den Wert 1
while button == 1           % solange die linke Maustaste verwendet wurde
    [xi,yi,button] = ginput(1);     % ginput(m) liest m Punkte ein,
                                    % also einen Punkt einlesen
    plot(xi,yi,'ro')        % diesen anzeigen,
    n = n+1;                % zaehlen und
    xy(:,n) = [xi;yi];      % in der Matrix abspeichern
end

[T,ind] = sort(xy(1,:));    % T: die Knoten (x-Werte) sortiert
Y = xy(2,ind);              % Y: die zugeh. Y-Werte in gleicher Reihenfolge



%% Berechnung der Koeffizientenmatrix des interpolierenden kubischen Splines

% To Do
fprintf('Berechnung der Koeffizientenmatrix noch nicht implementiert.\n');


                                            
%% Plot des berechneten Splines in das aktuelle Grafikfenster

% To Do
fprintf('Plotten des berechneten Splines noch nicht implementiert.\n');
fprintf('\n');


hold off