Data teknik tidak selalu berupa kurva dua dimensi, karena lintasan bergerak dalam ruang dan permukaan bergantung pada dua variabel bebas. Topik ini membahas kurva ruang dengan plot3, pembentukan grid evaluasi dengan meshgrid, permukaan kisi dengan mesh, dan permukaan berwarna dengan surf beserta colormap, colorbar, dan view. Setelah topik ini, data tiga dimensi dapat divisualkan lengkap dengan label tiga sumbu, skala warna, dan sudut pandang yang dapat diatur.
Kurva ruang dengan plot3#
Panggilan plot3(x, y, z) adalah padanan tiga dimensi dari plot, yakni menempatkan titik dalam ruang lalu menghubungkannya dengan garis. Sumbu ketiga membuat kedalaman lintasan terbaca, dan grid on menjadi lebih penting daripada pada figur dua dimensi karena garis bantu membantu mata menempatkan titik pada ruang. Contoh klasiknya adalah heliks, yakni lintasan yang berputar sambil naik, dengan persamaan , , dan .
% lintasan-heliks.m: lintasan heliks tiga dimensi dengan plot3
t = linspace(0, 6*pi, 300);
x = cos(t);
y = sin(t);
z = t / (2*pi);
plot3(x, y, z, 'b-');
xlabel('x');
ylabel('y');
zlabel('Putaran');
title('Lintasan heliks tiga putaran');
grid on;
print('-dsvg', 'lintasan-heliks.svg');Lintasan tiga putaran hasil skrip itu tampak pada figur berikut.
Perintah dekorasi yang dipakai sama dengan figur dua dimensi, hanya ditambah zlabel untuk sumbu ketiga. Sudut pandang bawaan dipilih agar ketiga sumbu terlihat sekaligus, dan sudut pandang itu dapat diatur sendiri melalui view seperti dibahas pada bagian permukaan berwarna. Kurva ruang dengan gaya garis dan penanda juga mengikuti konvensi triplet yang sama dengan plot, sehingga dua lintasan dapat dibedakan dengan 'b-' dan 'r--'.
Grid evaluasi dengan meshgrid#
Permukaan tidak dapat digambar dari dua vektor karena nilainya harus tersedia pada setiap kombinasi titik x dan y. Fungsi meshgrid membangun kombinasi itu dengan mengubah dua vektor menjadi dua matriks berukuran sama. Matriks X menyimpan satu nilai x pada tiap kolomnya, dan matriks Y menyimpan satu nilai y pada tiap barisnya. Pasangan pada posisi sama menyimpan satu titik bidang, sehingga Z yang dihitung dari keduanya berbentuk matriks dengan ukuran yang sama pula.
[X, Y] = meshgrid(linspace(-2, 2, 5), linspace(-2, 2, 3));
disp(size(X));
disp(X); 3 5
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2Keluaran di atas memperlihatkan mekanismenya pada skala kecil. Vektor lima nilai x dan tiga nilai y menghasilkan matriks X berukuran tiga kali lima. Setiap baris X berisi nilai x yang sama, sedangkan Y menyusun pola kebalikan, yaitu nilai y yang sama pada setiap kolomnya. Fungsi permukaan lalu dievaluasi sekali untuk seluruh titik dengan operasi per elemen, misalnya exp(-(X.^2 + Y.^2)), dan hasilnya siap digambar oleh mesh maupun surf.
Permukaan kisi dengan mesh#
Fungsi mesh(X, Y, Z) menggambar permukaan sebagai kisi garis, yakni garis mengikuti baris dan kolom matriks di atas bidang , dengan tinggi tiap simpul mengikuti Z. Bentuk kisi memperlihatkan struktur grid evaluasi secara langsung sehingga pembaca melihat dari mana permukaan berasal. Contoh berikut memakai fungsi Gaussian dua dimensi pada grid tujuh belas kali tujuh belas.
% permukaan-mesh.m: permukaan Gaussian sebagai kisi garis dengan mesh
[X, Y] = meshgrid(linspace(-2, 2, 17), linspace(-2, 2, 17));
Z = exp(-(X.^2 + Y.^2));
mesh(X, Y, Z);
xlabel('x');
ylabel('y');
zlabel('z');
title('Permukaan Gaussian dua dimensi sebagai kisi');
print('-dsvg', 'permukaan-mesh.svg');Permukaan Gaussian sebagai kisi garis hasil skrip itu tampak pada figur berikut.
Kerapatan grid menentukan keseimbangan antara kehalusan dan keterbacaan. Grid yang terlalu jarang membuat permukaan tampak bergelombang kasar, sedangkan grid yang terlalu rapat menghasilkan kisi yang pekat dan lambat dirender. Grid sekitar dua puluh titik per sisi sudah memadai untuk permukaan mulus pada figur berukuran biasa, dan jumlah itu dapat naik ketika figur dicetak besar.
Permukaan berwarna dengan surf#
Fungsi surf(X, Y, Z) menggambar permukaan sebagai petak-petak berwarna, dengan warna tiap petak dipetakan dari nilai Z melalui peta warna yang berlaku pada figur. Panggilan colormap(jet) mengganti peta warna tersebut, colorbar menambahkan sumbu skala warna di sisi kanan, dan view(az, el) memutar sudut pandang dengan azimuth dan elevasi dalam derajat. Ketiganya digabung pada contoh berikut.
% permukaan-surf.m: permukaan Gaussian dengan peta warna, colorbar, dan sudut pandang
[X, Y] = meshgrid(linspace(-2, 2, 21), linspace(-2, 2, 21));
Z = exp(-(X.^2 + Y.^2));
surf(X, Y, Z);
colormap(jet);
colorbar;
view(45, 30);
xlabel('x');
ylabel('y');
zlabel('z');
title('Permukaan Gaussian dengan peta warna jet');
print('-dsvg', 'permukaan-surf.svg');Permukaan berwarna dengan skala warna di sisi kanan hasil skrip itu tampak pada figur berikut.
Warna pada surf membawa informasi yang sama dengan ketinggian, dan kombinasi keduanya memudahkan pembacaan daerah datar dan daerah curam sekaligus. Sudut pandang bawaan sudah layak untuk banyak kasus, tetapi view memberi kendali penuh ketika satu bagian permukaan menutupi bagian lain. Kegunaan colorbar paling terasa ketika pembaca figur perlu mengubah warna menjadi angka, dan pada diagram sebar berwarna perilakunya sama.
Kesalahan umum#
- Meneruskan vektor pada
surftanpameshgrid. Permukaan mensyaratkanZberupa matriks yang barisnya sepanjangydan kolomnya sepanjangx, sehingga vektor satu dimensi ditolak. Kesalahan ini muncul ketika data x dan y dibuat denganlinspacelalu langsung dipakai tanpa membentuk grid.
x = linspace(-2, 2, 21);
y = linspace(-2, 2, 21);
z = exp(-(x.^2 + y.^2));
try
surf(x, y, z);
catch e
disp(e.message)
endsurface: rows (Z) must be the same as length (Y) and columns (Z) must be the same as length (X)- Memakai
X^2alih-alihX.^2pada matriks persegi. Kedua bentuk sah secara sintaks ketikaXpersegi, tetapiX^2mengalikan matriks menurut aturan aljabar linear sedangkanX.^2memangkatkan tiap elemen. Hasilnya berupa permukaan yang salah tanpa error apa pun, dan kekeliruan ini paling sering lolos karena grid persegi memang bentuk yang lazim. - Menganggap warna dan ketinggian selalu konsisten. Pada
surfkeduanya diambil dariZyang sama sehingga konsisten secara bawaan, tetapi setelah warna diganti lewat propertiCData, warna dan ketinggian dapat memuat besaran yang berbeda. Pastikancolorbaryang ditampilkan mengacu pada besaran yang benar ketika pemetaan warna diganti.
Ringkasan#
- Kurva ruang digambar dengan
plot3(x, y, z)dan dekorasinya mengikuti konvensi figur dua dimensi ditambahzlabel. meshgridmengubah dua vektor menjadi pasangan matriks berukuran sama sehingga fungsi dua variabel dievaluasi sekali untuk seluruh titik grid.meshmenggambar permukaan sebagai kisi garis dansurfsebagai petak berwarna, keduanya mensyaratkanZberupa matriks.colormapmengatur peta warna,colorbarmenampilkan skala warnanya, danviewmengatur sudut pandang, dengan peta warna bawaan yang berbeda antar implementasi.
Referensi#
- plot3 — MathWorks — Rujukan kurva ruang tiga dimensi lengkap dengan gaya garisnya.
- meshgrid — MathWorks — Rujukan pembentukan grid evaluasi dua dimensi.
- mesh — MathWorks — Rujukan permukaan kisi garis tiga dimensi.
- surf — MathWorks — Rujukan permukaan berwarna beserta pemetaan warnanya.
- colormap — MathWorks — Rujukan daftar peta warna dan pengaturannya.
- view — MathWorks — Rujukan sudut pandang kamera pada figur tiga dimensi.