Anda di halaman 1dari 4

Nama : Gede Arya Ardivan Pratama Saputra

NIM : 2015101021

Kelas : ILKOM B

Grafika Komputer

Buatlah program untuk membuat garis dengan menggunakan algoritma-algoritma berikut.

1. Algoritma Naif.

2. DDA.

3. Bresenham's.

Dalam hal ini saya membuat suatu soal dimana saya menggunakan algoritma DDA dan
Bresenham’s. Dimana untuk garis titik kordinat awal adalah (X0, Y0) dan untuk kordinat akhir
adalah (X1, Y1) yang berjarak lebih dari 20px. Sehingga didapatkan hasil seperti gambar berikut :

Dan untuk codenya seperti berikut :

grafika_lib.js

function gbr_titik(imageDataTemp, x, y, r, g, b) {
var index;
index = 4 *(x + (y * canvasGrafika.width));
imageDataTemp.data[index] = r;
imageDataTemp.data[index + 1] = g;
imageDataTemp.data[index + 2] = b;
imageDataTemp.data[index + 3] = 255;
}
function lingkaran_polar(imageDataTemp, xc,yc, radius, r,g,b) {
for (var theta = 0; theta < Math.PI*2; theta += 0.001) {
x = xc + radius* Math.cos(theta);
y = yc + radius* Math.sin(theta);

gbr_titik (imageDataTemp, Math.ceil(x), Math.ceil(y), r,g,b);


}
}

tugas2.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Grafika Komputer</title>
<style>
#canvas1 {
border : 2px solid black;
}
</style>
<script src="lib/grafika_lib.js"></script>
</head>

<body>
<canvas id="canvas1" width="400" height="400"></canvas>
<script>
var canvasGrafika;

canvasGrafika = document.querySelector("#canvas1");
var ctx;
ctx = canvasGrafika.getContext("2d");
var imageDataSaya = ctx.getImageData(0, 0, canvasGrafika.width,
canvasGrafika.height);

//Gambar Garis
for(var i = 0; i < 100; i++) {
gbr_titik(imageDataSaya, 0 + i, 0 + i, 255, 0, 0);
}

ctx.putImageData(imageDataSaya, 0, 0);

</script>
</body>
</html>

Kemudian untuk algoritma naif saya buat sebagai berikut :

Algoritmanaif.js

function garisBF(x1, y1, x2, y2) {


var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var imgData=ctx.createImageData(1,1);
var cwidth = (c.scrollWidth)/2;
var cheight = (c.scrollHeight)/2;
var titikx_awal = x1;
var titiky_awal = y1;
var titikx_akhir = x2;
var titiky_akhir = y2;
for (var i=0;i<imgData.data.length;i+=4){
//warna hijau
imgData.data[i+0]=0;
imgData.data[i+1]=100;
imgData.data[i+2]=50;
imgData.data[i+3]=255;
}
if (titikx_awal==titikx_akhir){
for (var y=titiky_awal;y<titiky_akhir;y+=1) {
x=titikx_awal;
ctx.putImageData(imgData,x,y);
}
}else if (titiky_awal==titiky_akhir){
for (var x=titikx_awal;x<titikx_akhir;x+=1) {
y=titiky_awal;
ctx.putImageData(imgData,x,y);
}
}
else{
var deltax = titikx_akhir - titikx_awal;
var deltay = titiky_akhir - titiky_awal;
if (titikx_awal>titikx_akhir) {
var m= deltay/deltax*-1;
var n = (titikx_akhir - titikx_awal +1)*-1;
}else{
var m= deltay/deltax;
var n = (titikx_akhir - titikx_awal +1);
}
if (titikx_awal>titikx_akhir){
for (var x=titikx_awal;x>=titikx_akhir;x-=1){
y = (m*(titikx_awal-x))+titiky_awal;
ctx.putImageData(imgData,x,y);
}
}else {
for (var x=titikx_awal;x<=titikx_akhir;x+=1){
y = (m*(x-titikx_awal))+titiky_awal;
ctx.putImageData(imgData,x,y);
}
}
}
}

Lalu hasilnya sebagai berikut :

Anda mungkin juga menyukai