Anda di halaman 1dari 38

RANCANGAN TUGAS MAHASISWA

KOMPUTASI GRAFIS

DISUSUN OLEH :

MUHAMMAD FANDI RAMADHAN F1B020093

MUHAMMAD SARSANA YUWANA R. F1B020101

DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1

JURUSAN TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS MATARAM
2023
RANCANGAN TUGAS MAHASISWA 1
KOMPUTASI GRAFIS

NAMA KELOMPOK :

MUHAMMAD FANDI RAMADHAN F1B020093

MUHAMMAD SARSANA YUWANA R. F1B020101

DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1

JURUSAN TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS MATARAM
2023
RANCANGAN TUGAS MAHASISWA
TUGAS 1
A. Tujuan
1. Mampu menjelaskan konsep garis (lines) pada komputer grafik
B. Metode Pengerjaan
Metode yang dilakukan dalam penyelesaian permasalahan yang diberikan mengenai
konsep garis pada komputasi grafis ini yaitu melakukan research terkait materi, dan
kemudian melakukan percobaan penyelesaian permasalahan menggunakan aplikasi matlab.

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;

%koordinat titik kedua


x2 = 1;
y2 = 2;

%menghitung gradien (m)


m = (y2 - y1) / (x2 - x1);

%menghitung intercept
b = y1 - m * x1;

%vektor x untuk garis


x = -10:0.1:10;

%menghitung vektor y berdasarkan garis


y = m * x + b;

%plot untuk titik - titik dan garis


figure;
hold on;
scatter ([x1, x2], [y1, y2], 'o', 'filled'); %titik
plot(x, y ,'r'); %garis
hold off;

%judul grafik
title('Grafik garis melalui titik (-5,5) dan (1,2)');

grid on;

%tampil grafik
axis ([-10 10 -10 10]);

Grafik :

2.Titik (4,3) dan (8,-2)


Script program :
%koordinat titik pertama
x1 = 4;
y1 = 3;

%koordinat titik kedua


x2 = 8;
y2 = -2;

%menghitung gradien (m)


m = (y2 - y1) / (x2 - x1);

%menghitung intercept
b = y1 - m * x1;

%vektor x untuk garis


x = -10:0.1:10;

%menghitung vektor y berdasarkan garis


y = m * x + b;

%plot untuk titik - titik dan garis


figure;
hold on;
scatter ([x1, x2], [y1, y2], 'o', 'filled'); %titik
plot(x, y ,'r'); %garis
hold off;

%judul grafik
title('Grafik garis melalui titik (4,3) dan (8,-2)');

grid on;

%tampil grafik
axis ([-10 10 -10 10]);

Grafik :

3. Titik (2,3) dan (5,3)


Script Program :
%koordinat titik pertama
x1 = 2;
y1 = 3;

%koordinat titik kedua


x2 = 5;
y2 = 3;

%menghitung gradien (m)


m = (y2 - y1) / (x2 - x1);
%menghitung intercept
b = y1 - m * x1;

%vektor x untuk garis


x = -10:0.1:10;

%menghitung vektor y berdasarkan garis


y = m * x + b;

%plot untuk titik - titik dan garis


figure;
hold on;
scatter ([x1, x2], [y1, y2], 'o', 'filled'); %titik
plot(x, y ,'r'); %garis
hold off;

%judul grafik
title('Grafik garis melalui titik (2,3) dan (5,3)');

grid on;

%tampil grafik
axis ([-10 10 -10 10]);

Grafik :

4. Titik (2,3) dan (2,5)


Script Program :
%koordinat titik pertama
x1 = 2;
y1 = 3;

%koordinat titik kedua


x2 = 2;
y2 = 5;

%menghitung gradien (m)


m = (y2 - y1) / (x2 - x1);
%menghitung intercept
b = y1 - m * x1;

%vektor x untuk garis


x = -10:0.1:10;

%menghitung vektor y berdasarkan garis


y = m * x + b;

%plot untuk titik - titik dan garis


figure;
hold on;
scatter ([x1, x2], [y1, y2], 'o', 'filled'); %titik
plot(x, y ,'r'); %garis
hold off;

%judul grafik
title('Grafik garis melalui titik (2,3) dan (2,5)');

grid on;

%tampil grafik
axis ([-10 10 -10 10]);
Grafik :

5. Titik (6,4) dan (2,1)


Script Program :
%koordinat titik pertama
x1 = 6;
y1 = 4;

%koordinat titik kedua


x2 = 2;
y2 = 1;

%menghitung gradien (m)


m = (y2 - y1) / (x2 - x1);
%menghitung intercept
b = y1 - m * x1;

%vektor x untuk garis


x = -10:0.1:10;

%menghitung vektor y berdasarkan garis


y = m * x + b;

%plot untuk titik - titik dan garis


figure;
hold on;
scatter ([x1, x2], [y1, y2], 'o', 'filled'); %titik
plot(x, y ,'r'); %garis
hold off;

%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

Gambar 1 Flowchart Pembuatan Garis


Gambar 1 merupakan gambaran umum dari proses pembuatan garis dengan proses
komputasi menggunakan software Matlab. Berikut penjelasan proses dari flowchart tersebut:

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 :

MUHAMMAD FANDI RAMADHAN F1B020093

MUHAMMAD SARSANA YUWANA R. F1B020101

DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1

JURUSAN TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS MATARAM
2023
RANCANGAN TUGAS MAHASISWA
TUGAS 2
A. Tujuan
1. Mampu menjelakan konsep garis (lines) pada komputer grafik menggunakan metode
DDA dan Bresenham.
2. Menggunakan berbagai metode dalam membuat garis dalam komputer grafik.
B. Metode Pengerjaan
Metode yang dilakukan dalam penyelesaian permasalahan yang diberikan mengenai
konsep garis pada komputasi grafis ini yaitu melakukan research terkait materi, dan
kemudian melakukan percobaan penyelesaian permasalahan menggunakan aplikasi matlab
menggunakan persamaan pada metode DDA dan Bresenham.

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 :

2.Titik (4,3) dan (8,-2)


Script program :
% Koordinat titik A
x1 = 4;
y1 = 3;
% Koordinat titik B
x2 = 8;
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(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.Titik (-5,5) dan (1,2)


Script program :
% Inisialisasi titik awal dan akhir
xA = -5;
yA = 5;
xB = 1;
yB = 2;
% Hitung perubahan x dan y
dx = xB - xA;
dy = yB - yA;
% Tentukan langkah dalam x dan y
if abs(dx) >= abs(dy)
steps = abs(dx);
else
steps = abs(dy);
end
% Hitung penambahan x dan y untuk setiap langkah
xIncrement = dx / steps;
yIncrement = dy / steps;
% Inisialisasi titik awal
x = xA;
y = yA;
% Gambar titik awal
plot(x, y, 'ro'); % Titik A (merah)
hold on;
% Mulai menggambar garis
for k = 1:steps
x = x + xIncrement;
y = y + yIncrement;
plot(round(x), round(y), 'ro'); % Gambar titik berikutnya (merah)
end
% Tampilkan hasilnya
axis([0 8 0 5]);
title('Simulasi Garis Menggunakan Metode Bresenham (Titik A(-5,5) ke
B(1,2))');
xlabel('X');
ylabel('Y');
grid on;
Grafik :
2.Titik (4,3) dan (8,-2)
Script program :
% Inisialisasi titik awal dan akhir
xA = 4;
yA = 3;
xB = 8;
yB = -2;
% Hitung perubahan x dan y
dx = xB - xA;
dy = yB - yA;
% Tentukan langkah dalam x dan y
if abs(dx) >= abs(dy)
steps = abs(dx);
else
steps = abs(dy);
end
% Hitung penambahan x dan y untuk setiap langkah
xIncrement = dx / steps;
yIncrement = dy / steps;
% Inisialisasi titik awal
x = xA;
y = yA;
% Gambar titik awal
plot(x, y, 'ro'); % Titik A (merah)
hold on;
% Mulai menggambar garis
for k = 1:steps
x = x + xIncrement;
y = y + yIncrement;
plot(round(x), round(y), 'ro'); % Gambar titik berikutnya (merah)
end
% Tampilkan hasilnya
axis([0 8 0 5]);
title('Simulasi Garis Menggunakan Metode Bresenham (Titik A(4,3) ke
B(8,-2))');
xlabel('X');
ylabel('Y');
grid on;
Grafik :
3. Titik (2,3) dan (5,3)
Script Program :
% Inisialisasi titik awal dan akhir
xA = 2;
yA = 3;
xB = 5;
yB = 3;
% Hitung perubahan x dan y
dx = xB - xA;
dy = yB - yA;
% Tentukan langkah dalam x dan y
if abs(dx) >= abs(dy)
steps = abs(dx);
else
steps = abs(dy);
end
% Hitung penambahan x dan y untuk setiap langkah
xIncrement = dx / steps;
yIncrement = dy / steps;
% Inisialisasi titik awal
x = xA;
y = yA;
% Gambar titik awal
plot(x, y, 'ro'); % Titik A (merah)
hold on;
% Mulai menggambar garis
for k = 1:steps
x = x + xIncrement;
y = y + yIncrement;
plot(round(x), round(y), 'ro'); % Gambar titik berikutnya (merah)
end
% Tampilkan hasilnya
axis([0 8 0 5]);
title('Simulasi Garis Menggunakan Metode Bresenham (Titik A(2,3) ke
B(5,3))');
xlabel('X');
ylabel('Y');
grid on;
Grafik :
4. Titik (2,3) dan (2,5)
Script Program :
% Inisialisasi titik awal dan akhir
xA = 2;
yA = 3;
xB = 2;
yB = 5;
% Hitung perubahan x dan y
dx = xB - xA;
dy = yB - yA;
% Tentukan langkah dalam x dan y
if abs(dx) >= abs(dy)
steps = abs(dx);
else
steps = abs(dy);
end
% Hitung penambahan x dan y untuk setiap langkah
xIncrement = dx / steps;
yIncrement = dy / steps;
% Inisialisasi titik awal
x = xA;
y = yA;
% Gambar titik awal
plot(x, y, 'ro'); % Titik A (merah)
hold on;
% Mulai menggambar garis
for k = 1:steps
x = x + xIncrement;
y = y + yIncrement;
plot(round(x), round(y), 'ro'); % Gambar titik berikutnya (merah)
end
% Tampilkan hasilnya
axis([0 8 0 5]);
title('Simulasi Garis Menggunakan Metode Bresenham (Titik A(2,3) ke
B(2,5))');
xlabel('X');
ylabel('Y');
grid on;
Grafik :
5. Titik (6,4) dan (2,1)
Script Program :
% Inisialisasi titik awal dan akhir
xA = 6;
yA = 4;
xB = 1;
yB = 2;
% Hitung perubahan x dan y
dx = xB - xA;
dy = yB - yA;
% Tentukan langkah dalam x dan y
if abs(dx) >= abs(dy)
steps = abs(dx);
else
steps = abs(dy);
end
% Hitung penambahan x dan y untuk setiap langkah
xIncrement = dx / steps;
yIncrement = dy / steps;
% Inisialisasi titik awal
x = xA;
y = yA;
% Gambar titik awal
plot(x, y, 'ro'); % Titik A (merah)
hold on;
% Mulai menggambar garis
for k = 1:steps
x = x + xIncrement;
y = y + yIncrement;
plot(round(x), round(y), 'ro'); % Gambar titik berikutnya (merah)
end
% Tampilkan hasilnya
axis([0 8 0 5]);
title('Simulasi Garis Menggunakan Metode Bresenham (Titik A(2,3) ke
B(2,5))');
xlabel('X');
ylabel('Y');
grid on;
Grafik :
E. Analisa
E.1 Flowchart
E.1.1 Flowchart DDA

Gambar 1 Flowchart Pembuatan Garis Menggunakan Metode DDA


E.1.2 Flowchart Bressenham

Gambar 2 Flowchart Pembuatan Garis Menggunakan Metode Bressenham


E. 2 Penjelasan
E.2.1 Metode DDA
Gambar 1 merupakan gambaran umum dari proses pembuatan garis dengan proses
komputasi menggunakan software Matlab dengan menggunkaan metode DDA(Digital
Differential Analyzer). Berikut penjelasan proses dari flowchart tersebut:

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.

E.2.2 Metode Bressenham


Gambar 2 merupakan gambaran umum dari proses pembuatan garis dengan proses
komputasi menggunakan software Matlab dengan menggunkaan metode Bressenham.
Berikut penjelasan proses dari flowchart tersebut:
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 perubahan 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 titik awal.
7. Selanjutnya program menggambar garis dari titik awal yang sudah di tentukan.
8. Selanjutnya membuat plot pada grafik.
9. Selanjutnya membuat judul pada grafik untuk memudahkan mengetahui informasi
terkait grafik yang akan di tampilkan.
10. Selanjutnya program menampilkan hasil dari perhitungan yang sudah di buat dalam
bentuk grafik.

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 :

MUHAMMAD FANDI RAMADHAN F1B020093

MUHAMMAD SARSANA YUWANA R. F1B020101

DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1

JURUSAN TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS MATARAM
2023
RANCANGAN TUGAS MAHASISWA
TUGAS 3
A. Tujuan
1. Mampu menjelaskan konsep lingkaran pada komputer grafik.
2. Menggunakan berbagai metode Bressenham dalam membuat garis lingkaran dalam
komputer grafik
B. Metode Pengerjaan
• Mahasiswa membentuk kelompok/Tim
• Tim mencari referensi pendukung terkait tugas
• Tim melakukan diskusi kelompok
• Tim membuat demo/simulasi untuk setiap individu dari hasil yang telah
dirumuskan/direncanakan Bersama
C. Studi Kasus
Tentukan koordinat titik-titik dijital untuk garis yang dibentuk oleh titik pusat (0, 0) dan
radius 10
D. Data Hasil
➢ Script Program
% Inisialisasi variabel
radius = 10;
x = 0;
y = radius;
p = 1 - radius;

% Gambar titik pada kuadran pertama


plot(x, y, 'b*');
hold on;

% Iterasi hingga x >= y


while x < y
x = x + 1;
if p < 0
p = p + 2 * x + 1;
else
y = y - 1;
p = p + 2 * x + 1 - 2 * y;
end

% Gambar titik-titik simetris di semua kuadran


plot(x, y, 'b*');
plot(-x, y, 'b*');
plot(x, -y, 'b*');
plot(-x, -y, 'b*');
plot(y, x, 'b*');
plot(-y, x, 'b*');
plot(y, -x, 'b*');
plot(-y, -x, 'b*');
end
axis equal;
grid on;
title('Gambar Lingkaran dengan Algoritma Bresenham');
xlabel('X');
ylabel('Y');
hold off;
➢ Langkah Pembentukan Lingkaran
o Titik pusat (0, 0) Radius 10
o (x0, y0) = (0, 0)
o r = 10
o (x0, y0) = (0, 10) 2x0 = 0,
o 2y0=20
o Parameter p0 = 1 – r = -9
o Tentukan nilai awal k = 0, untuk setiap posisi xk berlaku:
Bila pk < 0, maka titik selanjutnya adalah (xk + 1, yk) dan pk + 1 = pk +
2xk + 1 + 1
Bila pk > 0, maka titik selanjutnya adalah (xk + 1, yk – 1) dan pk + 1 =
pk + 2xk + 1 + 1 – 2yk + 1 dimana 2xk + 1 = 2xk + 2 dan 2yk + 1 = 2yk
-2
o Dari nilai-nilai tersebut, dapat diketahui koordinat titk-titik dijital yang dilalui
kedua titik tersebut pada tabel penyebaran berikut:

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 :

MUHAMMAD FANDI RAMADHAN F1B020093

MUHAMMAD SARSANA YUWANA R. F1B020101

DOSEN PENGAMPU :
Giri Wahyu Wiriasto, ST., MT (R)
19820904 201012 1

JURUSAN TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS MATARAM
2023
RANCANGAN TUGAS MAHASISWA
TUGAS 4
A. Tujuan
1. Mampu menggambar garis segitiga dengan konsep garis (lines) pada komputer grafik
menggunakan metode Bresenham.
2. Menggunakan berbagai metode dalam membuat garis dalam komputer grafik.
B. Metode Pengerjaan.
• Mahasiswa membentuk kelompok/Tim
• Tim mencari referensi pendukung terkait tugas
• Tim melakukan diskusi kelompok
• Tim membuat demo/simulasi untuk setiap individu dari hasil yang telah
dirumuskan/direncanakan Bersama.
C. Studi Kasus
Tentukan koordinat titik-titik dijital untuk garis yang dibentuk oleh titik
• A(2, 2)
• B(6, 2)
• C (4, 6).

D. Data Hasil
➢ Flowchart
➢ Script Program
% Inisialisasi titik-titik segitiga
xA = 2;
yA = 2;
xB = 6;
yB = 2;
xC = 4;
yC = 6;

% Inisialisasi variabel untuk menyimpan koordinat titik-titik


segitiga
coords = [xA, yA; xB, yB; xC, yC; xA, yA];

% Tampilkan hasil awal titik-titik segitiga


figure;
hold on;
plot(coords(:,1), coords(:,2), 'ro-');
axis([0 8 0 8]);
title('Simulasi Segitiga Menggunakan Metode Bresenham');
xlabel('X');
ylabel('Y');
grid on;

% Fungsi untuk menggambar garis dengan Metode Bresenham


function coords = drawLineBresenham(x1, y1, x2, y2, coords)
dx = abs(x2 - x1);
dy = abs(y2 - y1);
steep = dy > dx;

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

% Fungsi untuk menukar nilai dua variabel


function [a, b] = swap(a, b)
temp = a;
a = b;
b = temp;
end

% Menggambar garis segitiga AB


coords = drawLineBresenham(xA, yA, xB, yB, coords);

% Menggambar garis segitiga BC


coords = drawLineBresenham(xB, yB, xC, yC, coords);

% Menggambar garis segitiga CA


coords = drawLineBresenham(xC, yC, xA, yA, coords);

% 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

Anda mungkin juga menyukai