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