Professional Documents
Culture Documents
GRAFIKA KOMPUTER
NRP : 2110181033
Source Code
#include <GL/glut.h>
#include <cstdlib>
typedef struct {
float x, y;
} point2D_t;
typedef struct {
float r, g, b;
} color_t;
void sumbu_koordinat() {
point2D_t sumbuX[2] = { {-200.0,0.0},{200.0,0.0} };
point2D_t sumbuY[2] = { {0.0,-200.0},{0.0,200.0} };
color_t col = { 0.0,0.0,1.0 };
drawLine(sumbuX, 2, col);
drawLine(sumbuY, 2, col);
}
void segitiga() {
color_t color = { 0.0,1.0,0.0 };
CHANDRA KIRANA J 1
[Obyek 2D Rumus]
drawPolygon(segitiga01, 3, color);
drawPolygon(segitiga02, 3, color);
drawPolygon(segitiga03, 3, color);
drawPolygon(segitiga04, 3, color);
drawPolyline(segitiga05, 3, color1);
drawPolyline(segitiga06, 3, color1);
drawPolyline(segitiga07, 3, color1);
drawPolyline(segitiga08, 3, color1);
}
void kotak() {
color_t color = { 0.0,0.0,1.0 };
point2D_t kotak01[4] = { {-100.0,40.0}, {-100.0,80.0}, {-140.0,80.0}, {-
140.0,40.0} };
point2D_t kotak02[4] = { {100.0,40.0}, {100.0,80.0}, {140.0,80.0}, {140.0,40.0}
};
point2D_t kotak03[4] = { {100.0,-40.0}, {100.0,-80.0}, {140.0,-80.0}, {140.0,-
40.0} };
point2D_t kotak04[4] = { {-100.0,-40.0}, {-100.0,-80.0}, {-140.0,-80.0}, {-
140.0,-40.0} };
drawPolygon(kotak01, 4, color);
drawPolygon(kotak02, 4, color);
drawPolygon(kotak03, 4, color);
drawPolygon(kotak04, 4, color);
}
void bintang() {
color_t color = { 1.0, 0.0, 0.0 };
color_t color1 = { 0.0, 0.0, 1.0 };
CHANDRA KIRANA J 2
[Obyek 2D Rumus]
void lingkaran() {
color_t color = { 1.0, 0.0, 0.0 };
float r = 50.0;
point2D_t lingkaran[360];
for (int i = 0; i < 360; i++) {
lingkaran[i].x = (float)(r * cos(i*3.14 / 180));
lingkaran[i].y = (float)(r * sin(i*3.14 / 180));
}
drawPolyline(lingkaran, 360, color);
}
void Draw0() {
glClear(GL_COLOR_BUFFER_BIT);
sumbu_koordinat();
lingkaran();
//segitiga();
//kotak();
//bintang();
glutSwapBuffers();
glFlush();
}
CHANDRA KIRANA J 3
[Obyek 2D Rumus]
Capture
Analisa
Dalam percobaan kali ini menggambar beberapa bentuk dimulai dari sumbu koordinat
dan lingkaran menggunakan rumus. Dimana membuat sebuah sumbu koordinat dan
lingkaran dengan mendefinisikan fungsi lingkaran() kemudian dipanggil di dalam fungsi
draw0(). Membuat warna lingkaran dengan merah, menggunakan r sebesar 50. Dan
membuat nama shape nya lingkaran, kemudia di looping hingga 360. Menggunakan
rumus cos dan sin ], dimana (float)(r * cos(i*3.14 / 180) untuk lingkaran x, dan (float)(r
* sin(i*3.14 / 180) untuk lingkaran y. Kemudian dipanggil drawPolyline untuk
menghasilkan gambar berupa lingkaran.
CHANDRA KIRANA J 4
[Obyek 2D Rumus]
#include <GL/glut.h>
#include <cstdlib>
typedef struct {
float x, y;
} point2D_t;
typedef struct {
float r, g, b;
} color_t;
CHANDRA KIRANA J 5
[Obyek 2D Rumus]
void sumbuKoordinat() {
point2D_t sumbuX[2] = { {-320,0}, {320,0} };
point2D_t sumbuY[2] = { {0,-240}, {0,240} };
color_t col = { 0.0, 0.0, 1.0 };
drawLine(sumbuX, 2, col);
drawLine(sumbuY, 2, col);
}
void lingkaran() {
color_t red = { 1.0, 0.0, 0.0 };
color_t green = { 0.0, 1.0, 0.0 };
CHANDRA KIRANA J 6
[Obyek 2D Rumus]
void userdraw(void) {
sumbuKoordinat();
lingkaran();
titikBerputar(0, 50, -2, { 0.0, 0.0 });
titikBerputar(1, 50, -1, { 100.0, 100.0 });
titikBerputar(2, 50, -5, { 100.0, -100.0 });
titikBerputar(3, 50, 2, { -100.0, -100.0 });
titikBerputar(4, 50, -2, { -100.0, 100.0 });
glFlush();
}
void display(void) {
glClear(GL_COLOR_BUFFER_BIT);
userdraw();
glutSwapBuffers();
}
CHANDRA KIRANA J 7
[Obyek 2D Rumus]
Output
CHANDRA KIRANA J 8
[Obyek 2D Rumus]
Analisa
Dalam percobaan kali ini membuat lima lingkaran dan titik berputar dimana
menggunakan fungsi lingkaran(), lingkaranN(), tiitkBerputar(), dan titikBerputarN(). Dan
di dalam lingkaranN hampir sama dengan fungsi lingkaran namun ditambahkan sebuah
value yaitu sbX dan sbY untuk rumus sama persis dengan fungsi lingkaran. Kemudian
membuat fungsi timer untuk bisa menggerakan sebuah titik. Dan di dalam fungsi
titikBerputar di definisikan warna yang digunakan kemudian mendefinisikan teta, int x dan
y, kemudian memanggil drawDot(). Untuk titikBerputarN() hampir sama dengan fungsi
sebelumnya namun ditambahkan [flag] untuk membedekan kecepatan setiap gerakan
titik.
CHANDRA KIRANA J 9