%% 3d-grafiikkaa
%%
% <http://math.aalto.fi/~apiola/matlab/opas/lyhyt/grafiikka.html#sec:3d>
%%
clear 
close all
x=-2:.1:2; y=x;       % x-ja y-akselin diskretoinnit tässä samoja.
[X,Y]=meshgrid(x,y);  % X ja Y määräävät xy-alueen hilapisteistön.
size(X), size(Y)

%%
Z=exp(-X.^2-Y.^2);   % Korkeusmatriisin arvot hilapisteissä. 
                       % Huomaa "pisteittäiset" laskutoimitukset.
surf(x,y,Z)             % surf-funktio "asettaa maton
                          % sauvametsän päälle".
%%        
figure
contour(x,y,Z)      % Korkeuskäyräpiirros
axis equal
%%
% ezcontour(@(x,y)exp(-x.^2 - y.^2),[-2 2 -2 2])  % "easycontour" 
% Tassa ei tarvita meshgridiä.
% axis equal
%%
% Mita meshgridissa tapahtuu?
% Katsotaan pienillä datoilla.
%%
close all
x=0:3
y=-2:0
[X,Y]=meshgrid(x,y)
%%
% X:ssa x-sarakkeita y:n pituuden verran vierekkain
% Y:ssa y-riveja x:n pittuden verran allekkain
%% Jonoutetaan kumpikin pitkiksi sarakkeiksi:
% Hilan vastinkoordinaatit asettuvat paikalleen.
[X(:) Y(:)]
plot(X(:),Y(:),'*')
axis off
shg
%%
%  Muista: plot(X,Y) piirtää samankokoisten matriisien vastinsarakkeet.
plot(X,Y)
hold on
plot(X',Y')
shg
% Niinpä koordinaattiristikko syntyy tälläkin tavalla näppärästi.

%%  Napakoordinaatistoon, pinta ympyräalueen päällä
%
clf
t=linspace(0,2*pi,30);
r=linspace(0,1,10);
X=r'*cos(t);Y=r'*sin(t);  % Ulkotulot: (pysty_v)*(vaaka_v)
mesh(X,Y,zeros(size(X)))  % Nollataso
shg
%%
figure
Z=1./(sqrt(X.^2+Y.^2));
surf(X,Y,Z)
hold on
surf(X,Y,5*ones(size(Z))) 
shg
