1
I. PENDAHULUAN
Kurva adalah entitas matematis yang menggambarkan lintasan atau jalur pergerakan. Dalam
konteks matematika dan grafika komputer, kurva biasanya terdiri dari serangkaian titik yang
terhubung secara berurutan, membentuk jalur yang kontinu. Kurva digunakan untuk menggambarkan
berbagai objek geometris, seperti garis, bentuk, dan lintasan, serta digunakan dalam berbagai aplikasi
seperti desain grafis, animasi, permodelan 3D, dan banyak lagi. Kurva adalah komponen dasar dalam
dunia grafika komputer yang membantu menciptakan elemen visual yang kompleks dan menarik.
Mereka memiliki aplikasi yang sangat luas dan merupakan inti dari banyak proses desain dan animasi
yang kita lihat sehari-hari di dunia digital.
Kurva dapat digunakan untuk menggambarkan berbagai jenis bentuk, mulai dari yang
sederhana seperti garis lurus hingga yang lebih kompleks seperti kurva Bézier atau spline. Kurva
sering didefinisikan oleh parameter matematis atau serangkaian titik kontrol yang memengaruhi
bentuk dan lintasan kurva tersebut.
Dalam grafika komputer, pemahaman tentang kurva dan cara mereka digunakan sangat
penting, karena mereka merupakan salah satu elemen dasar yang digunakan untuk membuat gambar,
animasi, dan tampilan visual lainnya. Kurva membantu menciptakan elemen-elemen visual yang
lebih halus dan realistis, serta memungkinkan perancang dan pengembang untuk menggambarkan
bentuk yang beragam dan kompleks.
1
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
II. PEMBAHASAN
A. Source Code
1. Kurva Polynomial derajat 1
GL_LINES
#include <windows.h>
#include <gl/glut.h>
void display(void)
{
/* bersihkan layar */
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
float t = 0.0;
glBegin(GL_LINES);
for(t = -1.0; t<=1.0; t+=0.01){
/* x(t) = -1 + 2t; y(t) = 0 */
glVertex3f (t, -0.5+t*t, 0.0);
}
glEnd();
glFlush ();
}
2
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
break;
}
glutPostRedisplay();
}
}
GL_LINE_STRIP
#include <windows.h>
#include <gl/glut.h>
void display(void)
{
/* bersihkan layar */
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
float t = 0.0;
glBegin(GL_LINE_STRIP);
for(t = -1.0; t<=1.0; t+=0.01){
/* x(t) = -1 + 2t; y(t) = 0 */
glVertex3f (t, -0.5+t*t, 0.0);
3
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
}
glEnd();
glFlush ();
}
}
GL_LINES_LOOP
#include <windows.h>
4
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
#include <gl/glut.h>
void display(void)
{
/* bersihkan layar */
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
float t = 0.0;
glBegin(GL_LINE_LOOP);
for(t = -1.0; t<=1.0; t+=0.01){
/* x(t) = -1 + 2t; y(t) = 0 */
glVertex3f (t, -0.5+t*t, 0.0);
}
glEnd();
glFlush ();
}
5
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("2006116 - Dadan Ahmad Badar Muttaqin");
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return 0;
void myinit()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-10.0, 10.0, -10.0, 10.0);
glMatrixMode(GL_MODELVIEW);
}
void display(void)
{
/* bersihkan layar */
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 0.0);
6
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
float t = 0.0;
//f(x) = 1/14 (x+4)(x+1)(x-1)(x-3) + 0.5
glBegin(GL_LINES);
for(t = -10.0; t<=10.0; t+=0.1){
glVertex3f (t, (t+4)*(t+1)*(t-1)*(t-3)/14 + 0.5, 0.0);
}
glEnd();
glBegin(GL_LINES);
glVertex3f(-10.0,0.0,0.0);
glVertex3f(10.0,0.0,0.0);
glVertex3f(0.0,-10.0,0.0);
glVertex3f(0.0,10.0,0.0);
glEnd();
glFlush ();
}
7
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("2006116 - Dadan Ahmad Badar Muttaqin");
glutDisplayFunc(display);
myinit();
glutMainLoop();
return 0;
}
GL_LINE_STRIP
#include <windows.h>
#include <gl/glut.h>
void myinit()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-10.0, 10.0, -10.0, 10.0);
glMatrixMode(GL_MODELVIEW);
}
void display(void)
{
/* bersihkan layar */
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 0.0);
float t = 0.0;
//f(x) = 1/14 (x+4)(x+1)(x-1)(x-3) + 0.5
glBegin(GL_LINE_STRIP);
for(t = -10.0; t<=10.0; t+=0.1){
glVertex3f (t, (t+4)*(t+1)*(t-1)*(t-3)/14 + 0.5, 0.0);
8
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
}
glEnd();
glBegin(GL_LINES);
glVertex3f(-10.0,0.0,0.0);
glVertex3f(10.0,0.0,0.0);
glVertex3f(0.0,-10.0,0.0);
glVertex3f(0.0,10.0,0.0);
glEnd();
glFlush ();
}
9
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
glutMainLoop();
return 0;
}
GL_LINE_LOOP
#include <windows.h>
#include <gl/glut.h>
void myinit()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-10.0, 10.0, -10.0, 10.0);
glMatrixMode(GL_MODELVIEW);
}
void display(void)
{
/* bersihkan layar */
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 0.0);
float t = 0.0;
//f(x) = 1/14 (x+4)(x+1)(x-1)(x-3) + 0.5
glBegin(GL_LINE_LOOP);
for(t = -10.0; t<=10.0; t+=0.1){
glVertex3f (t, (t+4)*(t+1)*(t-1)*(t-3)/14 + 0.5, 0.0);
}
glEnd();
glBegin(GL_LINES);
glVertex3f(-10.0,0.0,0.0);
glVertex3f(10.0,0.0,0.0);
10
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
glVertex3f(0.0,-10.0,0.0);
glVertex3f(0.0,10.0,0.0);
glEnd();
glFlush ();
}
11
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
3. Kurva Trigonometri
GL_LINES
#include <windows.h>
#include <gl/glut.h>
void myinit()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.0, 10.0, -2.0, 2.0);
glMatrixMode(GL_MODELVIEW);
}
void display(void)
{
/* bersihkan layar */
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 0.0);
float x = 0.0;
glBegin(GL_LINES);
//perhitungan sudut di openGL menggunakan radian, bukan derajat
for(x=0.0; x<=6.28; x+=0.1)
{
glVertex2f(x,sin(x));
}
glEnd();
12
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
glBegin(GL_LINES);
glVertex3f(-10.0,0.0,0.0);
glVertex3f(10.0,0.0,0.0);
glVertex3f(0.0,-10.0,0.0);
glVertex3f(0.0,10.0,0.0);
glEnd();
glFlush ();
}
13
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
}
GL_LINE_STRIP
#include <windows.h>
#include <gl/glut.h>
void myinit()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.0, 10.0, -2.0, 2.0);
glMatrixMode(GL_MODELVIEW);
}
void display(void)
{
/* bersihkan layar */
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 0.0);
float x = 0.0;
glBegin(GL_LINE_STRIP);
//perhitungan sudut di openGL menggunakan radian, bukan derajat
for(x=0.0; x<=6.28; x+=0.1)
{
glVertex2f(x,sin(x));
}
glEnd();
glBegin(GL_LINES);
14
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
glVertex3f(-10.0,0.0,0.0);
glVertex3f(10.0,0.0,0.0);
glVertex3f(0.0,-10.0,0.0);
glVertex3f(0.0,10.0,0.0);
glEnd();
glFlush ();
}
15
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
GL_LINE_LOOP
#include <windows.h>
#include <gl/glut.h>
void myinit()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.0, 10.0, -2.0, 2.0);
glMatrixMode(GL_MODELVIEW);
}
void display(void)
{
/* bersihkan layar */
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 0.0);
float x = 0.0;
glBegin(GL_LINE_LOOP);
//perhitungan sudut di openGL menggunakan radian, bukan derajat
for(x=0.0; x<=6.28; x+=0.1)
{
glVertex2f(x,sin(x));
}
glEnd();
glBegin(GL_LINES);
glVertex3f(-10.0,0.0,0.0);
16
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
glVertex3f(10.0,0.0,0.0);
glVertex3f(0.0,-10.0,0.0);
glVertex3f(0.0,10.0,0.0);
glEnd();
glFlush ();
}
17
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
B. Output
1. Kurva Polynomial derajat 1
a) GL_LINES
b) GL_LINE_STRIP
c) GL_LINE_LOOP
18
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
b) GL_LINE_STRIP
c) GL_LINE_LOOP
19
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
3. Kurva Trigonometri
a) GL_LINES
b) GL_LINE_STRIP
c) GL_LINE_LOOP
20
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
C. Penjelasan
21
Praktikum Grafika Komputer
Pertemuan ke-2 Primitive Drawing
III. Kesimpulan
Dari kode yang telah dijelaskan diatas maka dapat diambil kesimpulan bahwa, jika
“GL_LINES” digunakan untuk menggambar garis-garis terpisah antara titik-titik yang
didefinisikan. Ini berarti setiap dua titik berturut-turut akan membentuk satu segmen garis. Cocok
digunakan untuk menggambar rangkaian garis yang terpisah, seperti menghubungkan beberapa titik
dengan garis lurus. “GL_LINE_STRIP” menghubungkan semua titik dalam urutan yang
didefinisikan, sehingga setiap titik selanjutnya terhubung dengan titik sebelumnya. Cocok
digunakan untuk menggambar kurva yang dihasilkan oleh rangkaian titik terkait, seperti
menggambar kurva Bezier dengan titik kendali berurutan. “GL_LINE_LOOP” mirip dengan
“GL_LINE_STRIP”, tetapi juga menghubungkan titik terakhir dengan titik pertama, membentuk
loop tertutup. Cocok digunakan untuk menggambar kurva yang harus membentuk poligon tertutup,
seperti menggambar bentuk geometri sederhana atau batas wilayah tertutup.
Pemilihan metode terbaik tergantung pada bagaimana kurva Anda dirancang dan bagaimana
Anda ingin menggambar kurva tersebut. Jadi, tidak ada metode yang sebaiknya dihindari dalam
menggambar kurva, karena pilihan tergantung pada kebutuhan spesifik Anda dalam menggambar
objek atau kurva tertentu.
22