0

Komputer Grafik: Gambar 2 Dimensi (Masjid)

Posted by harianku on 11.39
Komputer Grafik
Mengambar sebuah gambar 2 dimensi melalui aplikasi seperti photoshop sudah menjadi hal yang biasa, dan banyak orang yang bisa melakukannya. Namun bagaimana kalau menggambarnya melalui sebuah code, tentu tidak semua bisa melakukannya. Kali ini saya akan membagikan salah satu hasil karya saya, membangun sebuah gambar 2 dimensi menggunakan code C++.
Untuk tampilannya seperti berikut :

Yang perlu disiapkan untuk membuat gambar 2 Dimensi seperti diatas hanya siapkan aplikasi Microsoft Visual Studio. Untuk programnya saya berikan cuma-cuma, bisa langsung anda copas dan gunakan.

CODE C++ :
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <GL/glut.h>

int i;

float rgb(float z){
    return z/255;
}

typedef struct {
    float x,y;
} point2D_t;


void fillPolygon(point2D_t p[],int n, float r, float g, float b){
     glColor3f(r,g,b);
    glBegin(GL_POLYGON);
    for(int i=0;i<n;i++){
        glVertex2f(p[i].x,p[i].y);
    }
    glEnd();
}

void fillCircle(float r, int n, float x, float y, float red, float g, float b){
    point2D_t p[360];
    float a=6.28/n;
    for(int i=0;i<n;i++){
        p[i].x=x+r*(float)cos((float)i*a);  
        p[i].y=y+r*(float)sin((float)i*a);  
    }
    fillPolygon(p,n, red, g, b);
}


void userdraw(void){
    glPointSize(6.);
    static float tambah =0.111111;
    //tiang peyangga bulan
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(176),rgb(177),rgb(172));
    glVertex2f(-2.,130.);
    glVertex2f(2.,130.);
    glVertex2f(2.,-15.);
    glVertex2f(-2.,-15.);
    glEnd();
    //AWAN
    fillCircle(50,360,-150-(i*30),230,rgb(252),rgb(252),rgb(252));
    if(tambah>=700)
        tambah=0.111111;
    else
    {
        for(i=0;i<8;i++)
        {
            fillCircle(20,360,-150-(i*30)+tambah,230,rgb(252),rgb(252),rgb(252));
            fillCircle(20,360,150-(i*30)+tambah,230,rgb(252),rgb(252),rgb(252));
            fillCircle(20,360, 500-(i*30)-tambah,230,rgb(252),rgb(252),rgb(252));
          
        }
        for(i=0;i<8;i++)
        {
            fillCircle(20,360,-150-(i*30)+tambah,230,rgb(252),rgb(252),rgb(252));
            fillCircle(20,360,150-(i*30)-tambah,230,rgb(252),rgb(252),rgb(252));
            fillCircle(20,360, 500-(i*30)-tambah,230,rgb(252),rgb(252),rgb(252));
          
        }
        tambah+=0.011111;
    }
    for(i=0;i<4;i++)
    {
        fillCircle(20,360,-250-(i*30)+tambah,210,rgb(252),rgb(252),rgb(252));
        fillCircle(20,360,90-(i*30)+tambah,210,rgb(252),rgb(252),rgb(252));
    }

    //Menur besar
    fillCircle(100,360,0,-15,rgb(176),rgb(177),rgb(172));
    //Bulan separuh
    fillCircle(20,180,0,150,rgb(176),rgb(177),rgb(172));
    fillCircle(20,180,-3,155,rgb(255),rgb(76),rgb(76));
   
    //alas putih
    glBegin(GL_POLYGON);
    glColor3f(rgb(242),rgb(252),rgb(252));
    glVertex2f(-215.,-130.);
    glVertex2f(215.,-130.);
    glVertex2f(280.,-185.);
    glVertex2f(-280.,-185.);
    glEnd();
    //alas batas tembok
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(222),rgb(222),rgb(220));
    glVertex2f(-215.,-115.);
    glVertex2f(215.,-115.);
    glVertex2f(215.,-130.);
    glVertex2f(-215.,-130.);
    glEnd();
    //tembok putih
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(254),rgb(254),rgb(254));
    glVertex2f(-210.,-35.);
    glVertex2f(210.,-35.);
    glVertex2f(210.,-115.);
    glVertex2f(-210.,-115.);
    glEnd();
    //tiang kiri
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(222),rgb(173),rgb(192));
    glVertex2f(-210.,-35.);
    glVertex2f(-110.,-35.);
    glVertex2f(-110.,-115.);
    glVertex2f(-210.,-115.);
    glEnd();
    //antara tiang kiri dan tiang dekat pintu
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(222),rgb(173),rgb(192));
    glVertex2f(-70.,-85.);
    glVertex2f(-110.,-85.);
    glVertex2f(-110.,-115.);
    glVertex2f(-70.,-115.);
    glEnd();
    //tiang dekat pintu utama (kiri)
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(222),rgb(173),rgb(192));
    glVertex2f(-70.,-35.);
    glVertex2f(-50.,-35.);
    glVertex2f(-50.,-115.);
    glVertex2f(-70.,-115.);
    glEnd();
    //tiang kanan
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(222),rgb(173),rgb(192));
    glVertex2f(110.,-35.);
    glVertex2f(210.,-35.);
    glVertex2f(210.,-115.);
    glVertex2f(110.,-115.);
    glEnd();
    //tiang dekat pintu utama (kanan)
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(222),rgb(173),rgb(192));
    glVertex2f(70.,-35.);
    glVertex2f(50.,-35.);
    glVertex2f(50.,-115.);
    glVertex2f(70.,-115.);
    glEnd();
    //antara tiang kanan dan tiang dekat pintu
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(222),rgb(173),rgb(192));
    glVertex2f(70.,-85.);
    glVertex2f(110.,-85.);
    glVertex2f(110.,-115.);
    glVertex2f(70.,-115.);
    glEnd();
    //pintu
    fillCircle(26,360,0,-68,rgb(176),rgb(177),rgb(172));
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(176),rgb(177),rgb(172));
    glVertex2f(-25.,-55.);
    glVertex2f(-25.,-75.);
    glVertex2f(25.,-75.);
    glVertex2f(25.,-55.);
    glEnd();
    //jalan
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(222),rgb(173),rgb(192));
    glVertex2f(-50.,-115.);
    glVertex2f(-25.,-75.);
    glVertex2f(25.,-75.);
    glVertex2f(50.,-115.);
    glEnd();
    //atap
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(222),rgb(222),rgb(220));
    glVertex2f(-215.,-15.);
    glVertex2f(215.,-15.);
    glVertex2f(215.,-35.);
    glVertex2f(-215.,-35.);
    glEnd();

    //MENARA KIRI
    glBegin(GL_TRIANGLE_FAN);
        glColor3f(rgb(222),rgb(173),rgb(192));
        glVertex2f(-200.,130.);
        glVertex2f(-120.,130.);
        glVertex2f(-120.,-15.);
        glVertex2f(-200.,-15.);
    glEnd();
        //garis hitam menara kiri
        glBegin(GL_LINES);
            glColor3f(rgb(1),rgb(1),rgb(1));
            glVertex2f(-180.,130.);
            glVertex2f(-180.,-15.);
            glVertex2f(-140.,130.);
            glVertex2f(-140.,-15.);
        glEnd();
        //Pintu MENARA
        fillCircle(15,360,-160,90,rgb(116),rgb(110),rgb(112));
        fillCircle(15,360,-160,30,rgb(116),rgb(110),rgb(112));
        //Kotak Menara Bagian Bawah
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(193),rgb(193),rgb(193));
            glVertex2f(-210.,25.);
            glVertex2f(-110.,25.);
            glVertex2f(-110.,5.);
            glVertex2f(-210.,5.);
        glEnd();
        //Kotak Menara Bagian Tengah
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(193),rgb(193),rgb(193));
            glVertex2f(-210.,85.);
            glVertex2f(-110.,85.);
            glVertex2f(-110.,65.);
            glVertex2f(-210.,65.);
        glEnd();
        //Kotak Menara Bagian Atas
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(193),rgb(193),rgb(193));
            glVertex2f(-210.,115.);
            glVertex2f(-110.,115.);
            glVertex2f(-110.,135.);
            glVertex2f(-210.,135.);
        glEnd();
        //Kotak Hitam pada Menara Atas
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(10),rgb(10),rgb(10));
            glVertex2f(-207.,118.);
            glVertex2f(-115.,118.);
            glVertex2f(-115.,132.);
            glVertex2f(-207.,132.);
        glEnd();
        //Garis 1 menara kiri
        glBegin(GL_LINES);
            glColor3f(rgb(10),rgb(10),rgb(10));
            glVertex2f(-183.,85.);
            glVertex2f(-183.,65.);
            glVertex2f(-137.,85.);
            glVertex2f(-137.,65.);
        glEnd();
        //Garis 2 menara kiri
        glBegin(GL_LINES);
            glColor3f(rgb(10),rgb(10),rgb(10));
            glVertex2f(-183.,25.);
            glVertex2f(-183.,5.);
            glVertex2f(-137.,25.);
            glVertex2f(-137.,5.);
        glEnd();


    //MENARA KANAN
    glBegin(GL_TRIANGLE_FAN);
        glColor3f(rgb(222),rgb(173),rgb(192));
        glVertex2f(120.,130.);
        glVertex2f(200.,130.);
        glVertex2f(200.,-15.);
        glVertex2f(120.,-15.);
    glEnd();
        //Pintu MENARA
        fillCircle(15,360,160,90,rgb(116),rgb(110),rgb(112));
        fillCircle(15,360,160,30,rgb(116),rgb(110),rgb(112));
        //garis menara kanan
        glBegin(GL_LINES);
            glColor3f(rgb(1),rgb(1),rgb(1));
            glVertex2f(180.,130.);
            glVertex2f(180.,-15.);
            glVertex2f(140.,130.);
            glVertex2f(140.,-15.);
        glEnd();
        //Kotak Menara Bagian Bawah
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(193),rgb(193),rgb(193));
            glVertex2f(210.,25.);
            glVertex2f(110.,25.);
            glVertex2f(110.,5.);
            glVertex2f(210.,5.);
        glEnd();
        //Kotak Menara Bagian Tengah
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(193),rgb(193),rgb(193));
            glVertex2f(210.,85.);
            glVertex2f(110.,85.);
            glVertex2f(110.,65.);
            glVertex2f(210.,65.);
        glEnd();
        //Kotak Menara Bagian Atas
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(193),rgb(193),rgb(193));
            glVertex2f(210.,115.);
            glVertex2f(110.,115.);
            glVertex2f(110.,135.);
            glVertex2f(210.,135.);
        glEnd();
        //Warna hitam pada kotak Bagian atas
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(10),rgb(10),rgb(10));
            glVertex2f(207.,118.);
            glVertex2f(115.,118.);
            glVertex2f(115.,132.);
            glVertex2f(207.,132.);
        glEnd();

        //Garis 1 menara kanan
        glBegin(GL_LINES);
            glColor3f(rgb(10),rgb(10),rgb(10));
            glVertex2f(183.,85.);
            glVertex2f(183.,65.);
            glVertex2f(137.,85.);
            glVertex2f(137.,65.);
        glEnd();
        //Garis 2 menara kanan
        glBegin(GL_LINES);
            glColor3f(rgb(10),rgb(10),rgb(10));
            glVertex2f(183.,25.);
            glVertex2f(183.,5.);
            glVertex2f(137.,25.);
            glVertex2f(137.,5.);
        glEnd();

        //ATAP
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(221),rgb(221),rgb(219));
            glVertex2f(-120.,-10.);
            glVertex2f(120.,-10.);
            glVertex2f(120.,-40.);
            glVertex2f(-120.,-40.);
        glEnd();
        //Pelipit Atap KIRI
        glBegin(GL_TRIANGLE_FAN);
            glColor3f(rgb(193),rgb(193),rgb(193));
            glVertex2f(-140.,-15.);
            glVertex2f(-120.,-10.);
            glVertex2f(-120.,-40.);
            glVertex2f(-140.,-35.);
        glEnd();
        //Pelipit Atap KANAN
        glBegin(GL_TRIANGLE_FAN);
        glColor3f(rgb(193),rgb(193),rgb(193));
            glVertex2f(140.,-15.);
            glVertex2f(120.,-10.);
            glVertex2f(120.,-40.);
            glVertex2f(140.,-35.);
        glEnd();
    //atap hitam
    glBegin(GL_TRIANGLE_FAN);
    glColor3f(rgb(113),rgb(112),rgb(110));
    glVertex2f(-115.,-15.);
    glVertex2f(115.,-15.);
    glVertex2f(115.,-35.);
    glVertex2f(-115.,-35.);
    glEnd();

    //pintu kiri
        fillCircle(36,360,-160,-72,rgb(176),rgb(177),rgb(172));
        glBegin(GL_POLYGON);
            glColor3f(rgb(176),rgb(177),rgb(172));
            glVertex2f(-195,-60);
            glVertex2f(-125,-60);
            glVertex2f(-125,-110);
            glVertex2f(-195,-110);
        glEnd();
        fillCircle(32,360,-160,-72,rgb(83),rgb(80),rgb(71));
        glBegin(GL_POLYGON);
            glColor3f(rgb(83),rgb(80),rgb(71));
            glVertex2f(-192,-60);
            glVertex2f(-128,-60);
            glVertex2f(-128,-110);
            glVertex2f(-192,-110);
        glEnd();
        //pintu kanan
        fillCircle(36,360,160,-72,rgb(176),rgb(177),rgb(172));
        glBegin(GL_POLYGON);
            glColor3f(rgb(176),rgb(177),rgb(172));
            glVertex2f(195,-60);
            glVertex2f(125,-60);
            glVertex2f(125,-110);
            glVertex2f(195,-110);
        glEnd();
        //kotak pintu
        fillCircle(32,360,160,-72,rgb(83),rgb(80),rgb(71));
        glBegin(GL_POLYGON);
            glColor3f(rgb(83),rgb(80),rgb(71));
            glVertex2f(192,-60);
            glVertex2f(128,-60);
            glVertex2f(128,-110);
            glVertex2f(192,-110);
        glEnd();
   

}
void display(){
    glClear(GL_COLOR_BUFFER_BIT);
    userdraw();
    glutSwapBuffers();
}

int main(int argc, char ** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
    glutInitWindowPosition(100, 200);
    glutInitWindowSize(700, 700);
    glutCreateWindow("Mahbub 2110121036 2D4ITB");
    glClearColor(80, 0.3, 0.3, 80);
    gluOrtho2D(-320., 320., -240., 240.);
    glutIdleFunc(display);
    glutDisplayFunc(display);
    glutMainLoop();
   
    return 0;
}

 
Semoga bermanfaat dan bisa menjadi referensi untuk menciptakan karya anda sendiri.
Kunjungi Juga Kampus Tradisi Juara PENS


0 Comments

Posting Komentar

Copyright © Mahbub.