Anda di halaman 1dari 6

PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN 4

NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Lingkaran
TUGAS : Membuat Perhitungan lingkaran dan Program lingkaran

4.1 Tujuan
1. Praktikan mampu memahami inisialisasi lingkaran
2. Praktikan mampu memahami object lingkaran
3. Praktikan mampu memahami dasar menampilkan susunan lingkaran
4.2 Alat dan Bahan
1. Laptop
2. Visual studio 2013
3. OpenGL
4. Modul Grafika Komputer 2020

4.3 Landasan Teori


A. Lingkaran
Lingkaran adalah kumpulan dari titik-titik yang memiliki jarak dari titik pusat yang
sama untuk semua titik. Lingkaran dibuat dengan menggambarkan seperempat
lingkaran, karena bagian lain dapat dibuat sebagai bagian yang simetris. Penambahan
x dapat dilakukan dari 0 ke r sebesar unit step, yaitu menambahkan ± y untuk setiap
step. Pada dasarnya, mirip dengan penggambaran garis, algoritma penggambaran
lingkaran pun berusaha mencari solusi optimal sedemikian rupa sehingga lingkaran
yang dibentuk adalah sesempurna mungkin. Gambar di bawah ini memberikan ilustrasi
penggambaran lingkaran.

Gambar 4.1 ilustrasi penggambaran lingkaran


Algoritma Pembentuk Lingkaran Midpoint.
1. Tentuan radius r dengan titik pusat lingkaran (xc,yc) kemudian diperoleh: (x0,y0)
= (0.r)
2. Hitung nilai dari parameter P0 = 5 / (4 - r) atau P0 = 1 - r
3. Tentukan nilai k = 0, untuk setiap posisi xk berlaku sebagai berikut :
a. Jika Pk < 0, maka titik selanjutnya adalah (xk+1 , yk) dan parameter
selanjutnya Pk+1 = Pk + 2(xk+1) + 1
b. Jika Pk > 0, maka titik selanjutnya adalah (xk+1 , yk - 1) dan parameter
selanjutnya Pk+1 = Pk + 2(xk+1) + 1 – 2(yk+1)
4. Tentukan titik simetris pada ketujuh oktan yang lain
5. Ulangi langkah ke 3 sampai 5, sehingga x>=y

4.4 Langkah Langkah Tugas


NIM = 1818057 = NIM Depan = 5, NIM Akhir = 7
a. Perhitungan
Titik pusat (x0,y0) = (5,0) r = 7
1. Diketahui (x0,y0) = (0,7)
2. Hitung P0
P0 = 1 – r = 1 – 7 = -6
3. Cari x, y, dan pk+1 untuk iterasi 1
x = xk+1 = 0 + 1 = 1
y = yk = 7
Pk+1 = Pk + 2(xk+1) + 1 = -6 + 2(1) + 1 = -3
iterasi 2
x = xk+1 = 1 + 1 = 2
y = yk = 7
Pk+1 = Pk + 2(xk+1) + 1 = -3 + 2(2) + 1 = 2
iterasi 3
x = xk+1 = 2 + 1 = 3
y = yk-1 = 7 - 1 = 6
Pk+1 = Pk + 2(xk+1) + 1 – 2(yk+1) = 2 + 2(3) + 1 – 2(8) = 9 – 16 = -7
iterasi 4
x = xk+1 = 3 + 1 = 4
y = yk = 6
Pk+1 = Pk + 2(xk+1) + 1 = -7 + 2(4) + 1 = 2
iterasi 5
x = xk+1 = 4 + 1 = 5
y = yk-1 = 6 – 1 = 5
Pk+1 = Pk + 2(xk+1) + 1 – 2(yk+1) = 2 + 2(5) + 1 – 2(7) = -1

b. Tabel perhitungan
Iterasi x y pk Titik
0 0 7 -6 -
1 1 7 -3 (1,7) (1,-7) (-1,7) (-1,-7) (7,1) (7,-1) (-7,1) (-7,-1)
2 2 7 2 (2,7) (2,-7) (-2,7) (-2,-7) (7,2) (7,-2) (-7,2) (-7,-2)
3 3 6 -7 (3,6) (3,-6) (-3,6) (-3,-6) (6,3) (6,-3) (-6,3) (-6,-3)
4 4 6 2 (4,6) (4,-6) (-4,6) (-4,-6) (6,4) (6,-4) (-6,4) (-6,-4)
5 5 5 -1 (5,5) (5,-5) (-5,5) (-5,-5) (5,5) (5,-5) (-5,5) (-5,-5)

c. Grafik

Gambar 4.2 Hasil ilustrasi penggambaran lingkaran


Source code
Program Lingkaran
Lingkaran.cpp
#include <stdio.h>
#include <iostream>
#include <glut.h>
#define round
using namespace std;

int pntX1, pntY1, r;

void plot(int x, int y){


glBegin(GL_POINTS);
glVertex2i(round(x + pntX1), round(y + pntY1));
glEnd();
}

void myInit(void){
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(24, -16, -24, 16);
}

void midPointCircleAlgo()
{
int x = 0;
int y = r;
float decision = 1 - r;

plot(x, y);

while (y > x){


if (decision < 0){
x++;
decision += 2 * x + 1;
}
else{
y--;
x++;
decision += 2 * (x - y) + 1;
}
plot(x, y);
plot(x, -y);
plot(-x, y);
plot(-x, -y);
plot(y, x);
plot(y, -x);
plot(-y, x);
plot(-y, -x);
}
}

void myDisplay(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
glPointSize(5.0);
midPointCircleAlgo();
glFlush();
}
void main(int argc, char** argv)
{
cout << "\nMasukkan Koordinat-X : "; cin >> pntX1;
cout << "\nMasukkan Koordinat-Y : "; cin >> pntY1;
cout << "\nMasukkan Radius : "; cin >> r;

glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 150);
glutCreateWindow("1818057");
glutDisplayFunc(myDisplay);
myInit();
glutMainLoop();
}

Tampilan Hasil :

Gambar 4.3 Tampilan running Lingkaran


Analisa :
Pada program diatas, pada void plot di dalamnya terdapat x + pntX1 dan x + pntY1
untuk menggambarkan titik koordinat, kemudian memasukkan titik pusat x dan y pada
void midPointCircleAlgo. Lalu untuk nilai Pk “2 * x + 1;”dan apabila Pk< 0 maka nilai
xk+1 dan yk-1,untukPk“2 * x + 1;”.Berulang ulang.
Tabel 4.1 Fungsi OpenGL
No Fungsi Pengertian ContohPenggunaan
1 glClearColo Menandakan warna apa yang glClearColor(0.0, 0.0,
r digunakan sebagai background. 0.0, 0.0);
2 glVertex2i( Yaitu suatu fungsi untuk glVertex2i(pntX[i],
x,y) menggambar titik pada koordinat x pntY[i]);
dan y, dengan nilai satuan berupa
integer.
3 glEnd(); Untuk mengakhiri penggambaran glEnd();
sebuah garis
4 glFlush(); Renderring glFlush();

5 glColor3f() Untuk member warna suatu objek. glColor3f(1.0, 0.0,


0.0);
6 glPointSize Suatu fungsi yang berfungsi untuk glPointSize(5.0);
mengatur besarnya suatu objek

4.5 Kesimpulan
1. Algoritma penggambaran lingkaran pun berusaha mencari solusi optimal sedemikian
rupa agar lingkaran yang dibentuk sempurna.
2. Lingkaran yaitu kumpulan dari titik-titik yang memiliki jarak dari titik pusat yang sama
untuk semua titik.
3. Untuk penambahan x dapat dilakukan dari 0 ke r sebesar unit step, yaitu menambahkan
± y untuk setiap step.

Nilai Asisten Lab

Anda mungkin juga menyukai