Post on 27-Oct-2015
description
Menggambar Wajah Manusia Menggunakan C++ dengan OpenGL
Nama : Muhammad Novrizal
NIM : 1157301016
Kelas : G3
Terdiri dari:
1 buah Lingkaran
2 buah kotak
1 buah segitiga
1 buah persegipanjang
Membuat Bagian Muka
Lingkaran Posisi:
(x/100) (y/100)
Titik Vertex dan List Program
glBegin(GL_LINE_LOOP);
radius = 40; jumlah_titik = 60; 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();
Membuat Bagian Mata
Mata Sebelah Kanan Kotak Posisi (x,y):
Titik 1 (6,6) Titik 2 (7,6) Titik 3 (7,7) Titik 4 (6,7)
Titik Vertex dan List Program
glBegin (GL_QUADS);glVertex3f(0.6,0.6,0.0);glVerctex3f(0.7,0.6,0.0);glVertex3f(0.7,0.7,0.0);glVertex3f(0.6,0.7,0.0);glEnd ();
Mata Sebelah Kiri Kotak Posisi (x,y):
Titik 1 (3,6) Titik 2 (4,6) Titik 3 (4,7) Titik 4 (3,7)
Titik Vertex dan List Program
glBegin (GL_QUADS);glVertex3f(0.3,0.6,0.0);glVertex3f(0.4,0.6,0.0);glVertex3f(0.4,0.7,0.0);glVertex3f(0.3,0.7,0.0);glEnd ();
Membuat Bagian Hidung Segitiga Posisi (x, y):
Titik 1 (5, 6) Titik 2 (4, 5) Titik 3 (6, 5)
Titik Vertex dan List Program
glBegin(GL_TRIANGLES);glVertex3f(0.5,0.6,0.0);glVertex3f(0.4,0.5,0.0);glVertex3f(0.6,0.5,0.0);glEnd();
Membuat Bagian Mulut
Persegi Panjang Posisi (x, y):
Titik 1 (3.5, 3) Titik 2 (6.5, 3) Titik 3 (6.5, 4) Titik 4 (3.5, 4)
Titik Vertex dan List Program
glBegin(GL_QUADS);glVertex3f(0.35,0.3,0.0);glVertex3f(0.65,0.3,0.0);glVertex3f(0.65,0.4,0.0);glVertex3f(0.35,0.4,0.0);glEnd();
List Program:
#include <GL/glut.h>#include <windows.h>#include <math.h>
const double PI = 3.141592653589793;
void Draw(void);
int i,radius,jumlah_titik,x_tengah,y_tengah;
void Initialize() { glClearColor(1.0, 1.0, 1.0, 1.0); 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); glutInitWindowPosition(200, 200); glutInitWindowSize(230, 230); gluOrtho2D(-150.0, 150.0, -150.0, 150.0); glutCreateWindow("Wajah Manusia"); Initialize(); glutDisplayFunc(Draw); glutMainLoop(); return 0;}
void Draw(){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0,0.0,0.0); //lingkaran penuh glBegin(GL_LINE_LOOP);
radius = 40; jumlah_titik = 60;
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_QUADS);glVertex3f(0.3,0.6,0.0);glVertex3f(0.4,0.6,0.0);glVertex3f(0.4,0.7,0.0);glVertex3f(0.3,0.7,0.0);glEnd();
glBegin(GL_QUADS);glVertex3f(0.6,0.6,0.0);glVertex3f(0.7,0.6,0.0);glVertex3f(0.7,0.7,0.0);glVertex3f(0.6,0.7,0.0);glEnd();
glBegin(GL_TRIANGLES);glVertex3f(0.5,0.6,0.0);glVertex3f(0.4,0.5,0.0);glVertex3f(0.6,0.5,0.0);glEnd();
glBegin(GL_QUADS);glVertex3f(0.35,0.3,0.0);glVertex3f(0.65,0.3,0.0);glVertex3f(0.65,0.4,0.0);glVertex3f(0.35,0.4,0.0);glEnd();
glFlush();}