3d-grafiikkaa

Contents

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)
ans =

    41    41


ans =

    41    41

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 =

     0     1     2     3


y =

    -2    -1     0


X =

     0     1     2     3
     0     1     2     3
     0     1     2     3


Y =

    -2    -2    -2    -2
    -1    -1    -1    -1
     0     0     0     0

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
ans =

     0    -2
     0    -1
     0     0
     1    -2
     1    -1
     1     0
     2    -2
     2    -1
     2     0
     3    -2
     3    -1
     3     0

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