KOMPUTASI GRAFIS
DISUSUN OLEH :
DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1
NAMA KELOMPOK :
DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1
C. Studi Kasus
Tentukan koordinat titik-titik dijital untuk garis yang dibentuk oleh dua titik
sebagai berikut:
a. (-5,5) dan (1,2)
b. (4,3) dan (8,-2)
c. (2,3) dan (5,3)
d. (2,3) dan (2,5)
e. (6,4) dan (2,1)
D. Data Hasil
1.Titik (-5,5) dan (1,2)
Script program :
%koordinat titik pertama
x1 = -5;
y1 = 5;
%menghitung intercept
b = y1 - m * x1;
%judul grafik
title('Grafik garis melalui titik (-5,5) dan (1,2)');
grid on;
%tampil grafik
axis ([-10 10 -10 10]);
Grafik :
%menghitung intercept
b = y1 - m * x1;
%judul grafik
title('Grafik garis melalui titik (4,3) dan (8,-2)');
grid on;
%tampil grafik
axis ([-10 10 -10 10]);
Grafik :
%judul grafik
title('Grafik garis melalui titik (2,3) dan (5,3)');
grid on;
%tampil grafik
axis ([-10 10 -10 10]);
Grafik :
%judul grafik
title('Grafik garis melalui titik (2,3) dan (2,5)');
grid on;
%tampil grafik
axis ([-10 10 -10 10]);
Grafik :
%judul grafik
title('Grafik garis melalui titik (6,4) dan (2,1)');
grid on;
%tampil grafik
axis ([-10 10 -10 10]);
Grafik :
E. Analisa
E.1 Flowchart
1. langkah pertama ialah menginisialisasi variable yang akan di gunakan pada program
seperti menginisialisasi variable X1, Y1, X2, dan Y2.
2. Setelah melakukan inisalisasi variable, selanjutnya melakukan input nilai variable
sesuai dengan nilai yang akan di inputkan.
3. Selanjutnya setelah nilai dari masing-masing variable telah di input, proram
melakukan perhitungan gradien untuk menghitung kemiringan atau kecondongan
garis dengan menggunakan rumus :
m = (y2 - y1) / (x2 - x1)
m = (2 - 5) / (1 - (-5))
m = -3 / 6
m = -0.5
4. Selanjutnya menghitung intercept menggunkaan rumus :
b = y1 - m * x1
b = 5 - (-0.5) * (-5)
b = 5 - 2.5
b = 7.5
5. Selanjutnya adalah membuat vector x dengan menentukan panjang vector x, pada
studi kasus a ditentukan Panjang vector x adalah dari -10 hingga 10 dengan
menggunakan skala 0,1.
6. Selanjutnya adalah menghitung vector y menggunakan rumus persamaan garis
berikut :
y=m*x+b
7. Selanjutnya adalah membuat grafik dengan menggunakan plot titik-titik, serta
membuat plot garis dari vector y yang sudah dihitung sebelumnya.
8. Selanjutnya adalah memberi label pada sumbu X dan Y pada grafik.
9. Selanjutnya membuat judul pada grafik untuk memudahkan mengetahi informasi
terkait grafik yang akan di tampilkan.
10. Terakhir yaitu menampilkan grafik sesuai dengan batas vector yang sudah diatur
sebelumnya secara keseluruhan sebagai hasil dari program yang sudah di buat.
F. Kesimpulan
Berdasarkan studi kasus yang di berikan, proses pembuatan sebuah garis pada
computer, terutama pada mata kuliah komputasi grafis tidak sederhana seperti yang di
bayangkan. Pembuatan garis menggunakan beberapa persamaan dan rumus agar garis
tersebut dapat terlihat atau terbentuk pada computer, garis sendiri merupakan kumpulan titik
titik yang membentuk sebuah garis pada koordinat tertentu dan nilai tertentu.
RANCANGAN TUGAS MAHASISWA 2
KOMPUTASI GRAFIS
NAMA KELOMPOK :
DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1
C. Studi Kasus
Tentukan koordinat titik-titik dijital untuk garis yang dibentuk oleh dua titik
sebagai berikut:
a. (-5,5) dan (1,2)
b. (4,3) dan (8,-2)
c. (2,3) dan (5,3)
d. (2,3) dan (2,5)
e. (6,4) dan (2,1)
D. Data Hasil
D.1 Algoritma DDA (Digital Differential Analyzer)
1.Titik (-5,5) dan (1,2)
Script program :
% Koordinat titik A
x1 = -5;
y1 = 5;
% Koordinat titik B
x2 = 1;
y2 = 2;
% Menghitung selisih antara koordinat x dan y
dx = x2 - x1;
dy = y2 - y1;
% Menentukan jumlah langkah yang diperlukan
if abs(dx) > abs(dy)
steps = abs(dx);
else
steps = abs(dy);
end
% Menghitung peningkatan untuk setiap langkah
xIncrement = dx / steps;
yIncrement = dy / steps;
% Menginisialisasi titik awal
x = x1;
y = y1;
% Membuat matriks untuk menyimpan koordinat piksel yang ditempati garis
pixelMatrix = zeros(2, steps);
% Mengisi matriks dengan koordinat piksel
for i = 1:steps
pixelMatrix(1, i) = round(x);
pixelMatrix(2, i) = round(y);
x = x + xIncrement;
y = y + yIncrement;
end
% Menampilkan hasil dalam grafik
plot(pixelMatrix(1, :), pixelMatrix(2, :), '-o');
axis equal;
grid on;
title('Garis antara A(-5,5) dan B(1,2) dengan Metode DDA');
Grafik :
x = x + xIncrement;
y = y + yIncrement;
end
% Menampilkan hasil dalam grafik
plot(pixelMatrix(1, :), pixelMatrix(2, :), '-o');
axis equal;
grid on;
title('Garis antara A(4,3) dan B(8,-2) dengan Metode DDA');
Grafik :
3. Titik (2,3) dan (5,3)
Script Program :
% Koordinat titik A
x1 = 2;
y1 = 3;
% Koordinat titik B
x2 = 5;
y2 = 3;
% Menghitung selisih antara koordinat x dan y
dx = x2 - x1;
dy = y2 - y1;
% Menentukan jumlah langkah yang diperlukan
if abs(dx) > abs(dy)
steps = abs(dx);
else
steps = abs(dy);
end
% Menghitung peningkatan untuk setiap langkah
xIncrement = dx / steps;
yIncrement = dy / steps;
% Menginisialisasi titik awal
x = x1;
y = y1;
% Membuat matriks untuk menyimpan koordinat piksel yang ditempati garis
pixelMatrix = zeros(2, steps);
% Mengisi matriks dengan koordinat piksel
for i = 1:steps
pixelMatrix(1, i) = round(x);
pixelMatrix(2, i) = round(y);
x = x + xIncrement;
y = y + yIncrement;
end
% Menampilkan hasil dalam grafik
plot(pixelMatrix(1, :), pixelMatrix(2, :), '-o');
axis equal;
grid on;
title('Garis antara A(2,3) dan B(5,3) dengan Metode DDA');
Grafik :
4. Titik (2,3) dan (2,5)
Script Program :
% Koordinat titik A
x1 = 2;
y1 = 3;
% Koordinat titik B
x2 = 2;
y2 = 5;
% Menghitung selisih antara koordinat x dan y
dx = x2 - x1;
dy = y2 - y1;
% Menentukan jumlah langkah yang diperlukan
if abs(dx) > abs(dy)
steps = abs(dx);
else
steps = abs(dy);
end
% Menghitung peningkatan untuk setiap langkah
xIncrement = dx / steps;
yIncrement = dy / steps;
% Menginisialisasi titik awal
x = x1;
y = y1;
% Membuat matriks untuk menyimpan koordinat piksel yang ditempati garis
pixelMatrix = zeros(2, steps);
% Mengisi matriks dengan koordinat piksel
for i = 1:steps
pixelMatrix(1, i) = round(x);
pixelMatrix(2, i) = round(y);
x = x + xIncrement;
y = y + yIncrement;
end
% Menampilkan hasil dalam grafik
plot(pixelMatrix(1, :), pixelMatrix(2, :), '-o');
axis equal;
grid on;
title('Garis antara A(2,3) dan B(2,5) dengan Metode DDA');
Grafik :
5. Titik (6,4) dan (2,1)
Script Program :
% Koordinat titik A
x1 = 6;
y1 = 4;
% Koordinat titik B
x2 = 2;
y2 = 1;
% Menghitung selisih antara koordinat x dan y
dx = x2 - x1;
dy = y2 - y1;
% Menentukan jumlah langkah yang diperlukan
if abs(dx) > abs(dy)
steps = abs(dx);
else
steps = abs(dy);
end
% Menghitung peningkatan untuk setiap langkah
xIncrement = dx / steps;
yIncrement = dy / steps;
% Menginisialisasi titik awal
x = x1;
y = y1;
% Membuat matriks untuk menyimpan koordinat piksel yang ditempati garis
pixelMatrix = zeros(2, steps);
% Mengisi matriks dengan koordinat piksel
for i = 1:steps
pixelMatrix(1, i) = round(x);
pixelMatrix(2, i) = round(y);
x = x + xIncrement;
y = y + yIncrement;
end
% Menampilkan hasil dalam grafik
plot(pixelMatrix(1, :), pixelMatrix(2, :), '-o');
axis equal;
grid on;
title('Garis antara A(6,4) dan B(2,1) dengan Metode DDA');
Grafik :
D.2 Algoritma Bressenham
1. langkah pertama ialah menginisialisasi variable yang akan di gunakan pada program
seperti menginisialisasi variable X1, Y1, X2, dan Y2.
2. Setelah melakukan inisalisasi variable, selanjutnya melakukan input nilai variable
sesuai dengan nilai yang akan di inputkan.
3. Selanjutnya setelah nilai dari masing-masing variable telah di input, program
melakukan perhitungan selisih antara koordinat x dan y dengan menggunakan
persamaan :
dx = x2 – x1
dy = y2 – y1
4. Selanjutnya program menentukan jumlah Langkah yang diperlukan dengan
menggunakan persamaan dx > dy.
5. Selanjutnya program melakukan perhitungan peningkatan untuk setiap langkah pada
koordinat x dan y dengan persamaan x + 1 = dx / steps dan x + 1 = dx / steps.
6. Selanjutnya program membuat matriks untuk menyimpan koordinat dari piksel yang
di tempati oleh garis.
7. Selanjutnya program mengisi matriks yang sudah di buat dengan persamaan
Matrix(1, i) = x
Matrix(2, i) = y
8. Selanjutnya membuat plot pada grafik.
9. Selanjutnya membuat judul pada grafik untuk memudahkan mengetahui informasi
terkait grafik yang akan di tampilkan.
10. Terakhir yaitu menampilkan grafik sesuai dengan hasil dari perhitungan matriks
yang sudah di buat pada program.
F. Kesimpulan
Berdasarkan studi kasus yang di berikan, proses pembuatan sebuah garis pada
computer, pada bahasan kali ini menggunakan dua metode yang berbeda yaitu algoritma
DDA dan algoritma Bressenham. Algoritma Bressenham adalah algoritma yang
menggunakan pengembangan adari algoritma klasik dengan menggunakan perhitungan
matematika dengan bilangan integer, sedangkan algoritma DDA (Digital Differential
Analyzer) adalah algoritma perhitungan pembentukan garis berdasarkan perhitungan Δx dan
Δy dengan menentukan dua endpoint yaitu titik awal dan titik akhir.
RANCANGAN TUGAS MAHASISWA 3
KOMPUTASI GRAFIS
NAMA KELOMPOK :
DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1
Dapat disimpulkan pada table diatas diketahui titik-titik dijitalnya adalah (1, 10),
(2, 10), (3, 10), (4, 9), (5, 9), (6, 8), dan (7, 7).
➢ Flowchart
➢ Grafik Titik Digital
➢ Penjelasan
Program dimulai dengan menginisialisasi titik A dan B masing-masing dengan
koordinat (x1, y1) dan (x2, y2). Titik-titik ini akan menjadi titik awal dan akhir garis
yang ditarik. Selanjutnya program akan menghitung selisih antara koordinat x dan y
dari dua titik yang disimpan dalam variabel dx dan dy.
Program ini akan menentukan jumlah langkah yang diperlukan untuk menarik
garis. Hal ini dilakukan dengan membandingkan nilai absolut dx dan dy, dan semakin
besar keduanya maka jumlah langkah yang dibutuhkan adalah .
Lalu program kemudian akan menghitung gain untuk setiap langkah pada
koordinat x dan y, dengan membagi dx dan dy dengan jumlah langkah. Program
menginisialisasi titik awal (x, y) dengan koordinat titik A(x1, y1) dan membuat matriks
piksel untuk menyimpan koordinat piksel yang akan ditempati oleh garis. Matriks ini
memiliki ukuran 2xsteps. Program kemudian akan melakukan langkah sebanyak
mungkin. Pada setiap iterasi , program membulatkan nilai x dan y ke nilai terdekat dan
menyimpannya dalam pixelMatrix. Program akan memperbarui nilai x dan y dengan
menambahkannya ke kenaikan x_increment dan y_increment yang dihitung
sebelumnya sebesar . Program akan menambahkan titik akhir (x2, y2) ke di
pixelMatrix.
RANCANGAN TUGAS MAHASISWA 4
KOMPUTASI GRAFIS
NAMA KELOMPOK :
DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1
D. Data Hasil
➢ Flowchart
➢ Script Program
% Inisialisasi titik-titik segitiga
xA = 2;
yA = 2;
xB = 6;
yB = 2;
xC = 4;
yC = 6;
if steep
[x1, y1] = swap(x1, y1);
[x2, y2] = swap(x2, y2);
end
if x1 > x2
[x1, x2] = swap(x1, x2);
[y1, y2] = swap(y1, y2);
end
dx = abs(x2 - x1);
dy = abs(y2 - y1);
error = 0;
ystep = 0;
y = y1;
if y1 < y2
ystep = 1;
else
ystep = -1;
end
for x = x1:x2
if steep
coords = [coords; [y, x]];
else
coords = [coords; [x, y]];
end
error = error + dy;
if 2 * error >= dx
y = y + ystep;
error = error - dx;
end
end
end
% Tampilkan hasilnya
plot(coords(:,1), coords(:,2), 'bo-'); % Gambar garis-garis
segitiga (biru)
hold off;
➢ Analisa
• Tentukan titik awal dan titik akhir
Titik awal = (2, 2)
Titik akhir = (6, 2)
• Tentukan nilai ∆x, ∆y, 2∆x, dan 2∆y - 2∆x
∆x = x1 – x0 = 6 – 2 = 4
∆y = y1 – y0 = 2 – 2 = 0
2∆x = 8
2∆y = 0
2∆y - 2∆x = (0 – 8) = -8
• Hitung nilai parameter p0
p0 = 2∆y – x = 0 – (-8) = 8
➢ Didapat nilai increment
Incerement 2∆y = 0 2∆y - 2∆x = -8
Untuk setiap xk sepanjang jalur garis, dimulai dengan k = 0
Bila pk < 0, maka titik selanjutnya (xk+1, yk) dan pk+1 = pk + 2∆y
Bila pk > 0, maka titik selanjutnya (xk+1, yk+1) dan pk+1 = pk + 2∆y - 2∆x -
y2∆x
➢ Tabel Penyebaran Titik
Sehingga, koordinat titik-titik dijital untuk garis yang dibentuk oleh titik A(2,
2), B(6, 2), dan C(4, 6).
➢ Grafik koordinat