Membuat Lingkaran dengan OpenGL
Dalam geometri Euklid, sebuah lingkaran adalah himpunan semua titik pada bidang dalam jarak tertentu, yang disebut jari-jari, dari suatu titik tertentu, yang disebut pusat. Lingkaran adalah contoh dari kurva tertutup sederhana, membagi bidang menjadi bagian dalam dan bagian luar.
Pada pembuatan lingkaran ini kita menggunakan rumus-rumus matematika berupa cos dan sin. Berkaitan dengan cos dan sin, maka yang paling penting kita harus mengubah sudut dari dari deg ke radian, yaitu 1 deg = 3.14159/180, untuk 1 lingkaran maka 2 deg.
Program Sederhana Lingkaran
Program Sedikit variasi dengan Lingkaran
Pada pembuatan lingkaran ini kita menggunakan rumus-rumus matematika berupa cos dan sin. Berkaitan dengan cos dan sin, maka yang paling penting kita harus mengubah sudut dari dari deg ke radian, yaitu 1 deg = 3.14159/180, untuk 1 lingkaran maka 2 deg.
Program Sederhana Lingkaran
Hasil Kompile Program di atas#include <gl/glut.h> #include <windows.h> #include <math.h> const double PI = 3.141592653589793; int i,radius,jumlah_titik,x_tengah,y_tengah; void Draw() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glBegin(GL_LINE_LOOP); radius=40; jumlah_titik=20; x_tengah=50; y_tengah=50; for (i=0;i<=360;i++){ float sudut=i*(2*PI/jumlah_titik); float x=x_tengah+radius*cos(sudut); float y=y_tengah+radius*sin(sudut); glVertex2f(x/100,y/100); } glEnd(); glFlush(); } void Initialize() { glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); } int main(int iArgc, char** cppArgv) { glutInit(&iArgc, cppArgv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(250, 250); glutInitWindowPosition(200, 200); glutCreateWindow("Lingkaran"); Initialize(); glutDisplayFunc(Draw); glutMainLoop(); return 0; }
Program Sedikit variasi dengan Lingkaran
Hasil Kompile Program diatas#include <gl/glut.h> #include <windows.h> #include <math.h> const double PI = 3.141592653589793; int i,radius,jumlah_titik,x_tengah,y_tengah; void Draw() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glBegin(GL_LINE_LOOP); radius=40; jumlah_titik=20; x_tengah=50; y_tengah=50; for (i=0;i<=360;i++){ float sudut=i*(2*PI/jumlah_titik); float x=x_tengah+radius*cos(sudut); float y=y_tengah+radius*sin(sudut); glVertex2f(x/100,y/100); } glEnd(); glBegin(GL_TRIANGLE_FAN); radius=5; jumlah_titik=20; x_tengah=30; y_tengah=60; for (i=0;i<=jumlah_titik;i++){ float sudut=i*(2*PI/jumlah_titik); float x=x_tengah+radius*cos(sudut); float y=y_tengah+radius*sin(sudut); glVertex2f(x/100,y/100); } glEnd(); glBegin(GL_TRIANGLE_FAN); radius=5; jumlah_titik=20; x_tengah=70; y_tengah=60; for (i=0;i<=jumlah_titik;i++){ float sudut=i*(2*PI/jumlah_titik); float x=x_tengah+radius*cos(sudut); float y=y_tengah+radius*sin(sudut); glVertex2f(x/100,y/100); } glEnd(); glBegin(GL_LINE_LOOP); glVertex2f(0.5,0.6); glVertex2f(0.4,0.5); glVertex2f(0.6,0.5); glEnd(); glBegin(GL_LINE_LOOP); radius=20; jumlah_titik=180; x_tengah=50; y_tengah=40; for (i=90;i<=jumlah_titik;i++){ float sudut=i*(2*PI/jumlah_titik); float x=x_tengah+radius*cos(sudut); float y=y_tengah+radius*sin(sudut); glVertex2f(x/100,y/100); } glEnd(); glFlush(); } void Initialize() { glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); } int main(int iArgc, char** cppArgv) { glutInit(&iArgc, cppArgv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(250, 250); glutInitWindowPosition(200, 200); glutCreateWindow("Lingkaran senyum"); Initialize(); glutDisplayFunc(Draw); glutMainLoop(); return 0; }