Grafika Komputer : Implementasi Clipping Polygon

 Artikel kali ini kita akan mencoba mengImplementasi Clipping Polygon dalam mata kuliah grafika komputer menjadi suatu program c++. Tanpa berlama-lama kita langsung masuk ke pembahasannya.

Pertama adalah harus dipastikan anda sudah menambahkan library graphics.h.

Baca Juga : Apa Sih CTSS Operation ? : Pengertian dan Sejarah Singkatnya

Setelah itu copykan kode dibawah ini :

#include<iostream>

#include<conio.h>

#include<graphics.h>

#define round(a) ((int)(a+0.5))

//inisialisasi dan deklarasi variabel

int k, i;

float xmin,ymin,xmax,ymax,arr[20],m;

using namespace std;

//fungsi memotong bagian kiri

void clipLeft(float x1,float y1,float x2,float y2)

{

    if(x2-x1)

       m=(y2-y1)/(x2-x1);

    else

       m=100000;

    if(x1 >= xmin && x2 >= xmin)

    {

       arr[k]=x2;

       arr[k+1]=y2;

       k+=2;

    }

    if(x1 < xmin && x2 >= xmin)

    {

       arr[k]=xmin;

       arr[k+1]=y1+m*(xmin-x1);

       arr[k+2]=x2;

       arr[k+3]=y2;

       k+=4;

    }

    if(x1 >= xmin  && x2 < xmin)

    {

       arr[k]=xmin;

       arr[k+1]=y1+m*(xmin-x1);

       k+=2;

    }

}

//fungsi memotong bagian atas

void clipTop(float x1,float y1,float x2,float y2)

{

    if(y2-y1)

       m=(x2-x1)/(y2-y1);

    else

       m=100000;

    if(y1 <= ymax && y2 <= ymax)

    {

       arr[k]=x2;

       arr[k+1]=y2;

       k+=2;

    }

    if(y1 > ymax && y2 <= ymax)

    {

       arr[k]=x1+m*(ymax-y1);

       arr[k+1]=ymax;

       arr[k+2]=x2;

       arr[k+3]=y2;

       k+=4;

    }

    if(y1 <= ymax  && y2 > ymax)

    {

      arr[k]=x1+m*(ymax-y1);

      arr[k+1]=ymax;

      k+=2;

    }

}

//fungsi memotong bagian kanan

void clipRight(float x1,float y1,float x2,float y2)

{

    if(x2-x1)

        m=(y2-y1)/(x2-x1);

    else

        m=100000;

    if(x1 <= xmax && x2 <= xmax)

    {

       arr[k]=x2;

       arr[k+1]=y2;

       k+=2;

    }

    if(x1 > xmax && x2 <= xmax)

    {

      arr[k]=xmax;

      arr[k+1]=y1+m*(xmax-x1);

      arr[k+2]=x2;

      arr[k+3]=y2;

      k+=4;

    }

    if(x1 <= xmax  && x2 > xmax)

    {

      arr[k]=xmax;

      arr[k+1]=y1+m*(xmax-x1);

      k+=2;

    }

}

//fungsi memotong bagian bawah

void clipBottom(float x1,float y1,float x2,float y2)

{

    if(y2-y1)

       m=(x2-x1)/(y2-y1);

    else

       m=100000;

    if(y1 >= ymin && y2 >= ymin)

    {

       arr[k]=x2;

       arr[k+1]=y2;

       k+=2;

    }

    if(y1 < ymin && y2 >= ymin)

    {

       arr[k]=x1+m*(ymin-y1);

       arr[k+1]=ymin;

       arr[k+2]=x2;

       arr[k+3]=y2;

       k+=4;

    }

    if(y1 >= ymin  && y2 < ymin)

    {

      arr[k]=x1+m*(ymin-y1);

      arr[k+1]=ymin;

      k+=2;

    }

}

int main()

{

    int gdriver=DETECT,gmode,n,poly[20];

    float xi,yi,xf,yf,polyy[20];

    system(“CLS”);

    cout<<“Masukan kordinat jendela klip :\nxmin, ymin :”;

    cin>>xmin>>ymin;

    cout<<“xmax, ymax:”;

    cin>>xmax>>ymax;

    cout<<“Poligon Yang akan dipotong (jumlah sisinya): “;

    cin>>n;

    cout<<“Masukan Setiap Koordinatnya : “;

    for(int i=0;i < 2*n;i++)

     cin>>polyy[i];

    polyy[i]=polyy[0];

    polyy[i+1]=polyy[1];

    for(i=0;i < 2*n+2;i++){

     poly[i]=round(polyy[i]);

}

    initgraph(&gdriver,&gmode,”C:\\TurboC3\\BGI”);

    setcolor(RED);

    rectangle(xmin,ymax,xmax,ymin);

    cout<<“\t\tUNCLIPPED POLYGON”;

    setcolor(WHITE);

    fillpoly(n,poly);

    getch();

    cleardevice();

    k=0;

    for(i=0;i < 2*n;i+=2)

        clipLeft(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);

      n=k/2;

    for(i=0;i < k;i++)

      polyy[i]=arr[i];

      polyy[i]=polyy[0]; 

      polyy[i+1]=polyy[1];

    k=0;

    for(i=0;i < 2*n;i+=2)

       clipTop(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);

    n=k/2;

    for(i=0;i < k;i++)

      polyy[i]=arr[i];

      polyy[i]=polyy[0];

      polyy[i+1]=polyy[1];

    k=0;

    for(i=0;i < 2*n;i+=2)

       clipRight(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);

    n=k/2;

    for(i=0;i < k;i++)

      polyy[i]=arr[i];

      polyy[i]=polyy[0];

      polyy[i+1]=polyy[1];

    k=0;

    for(i=0;i < 2*n;i+=2)

       clipBottom(polyy[i],polyy[i+1],polyy[i+2],polyy[i+3]);

    for(i=0;i < k;i++)

       poly[i]=round(arr[i]);

    if(k)

      fillpoly(k/2,poly);

    setcolor(RED);

    rectangle(xmin,ymax,xmax,ymin);

    cout<<“\tCLIPPED POLYGON”;

    getch();

    closegraph();

}

Kunjungi Juga : ocumps.tech

Selanjutnya anda coba run hingga diminta untuk memasukan beberapa nilai, silahkan input beberapa nilai lalu tekan enter. maka akan terlihat clipping polygon proses perpotongannya.

Sekian artikel singkat kali ini, Semoga bermanfaat, menambah wawasan dan membantu teman-teman ketika ingin mencoba mengimplementasikan clipping polygon. Terima kasih telah berkunjung.

Baca Juga : Cara Instalasi Laravel Dengan Mudah – Laravel Tutorial

Ocumps Writer

Related Posts

Membalikan Kata Dengan Bahasa Pemograman C++

Artikel kali ini kita akan mencoba menyelesaikan suatu persoalan dibawah ini menggunakan bahasa pemograman c++. Kunjungi Juga : ocumps.tech     “Buatlah sebuah program untuk membalikan sebuah array of string…

Continue reading
Mencari Nilai Acak Dengan Bahasa Pemograman C++

Artikel kali ini kita akan mencoba menyelesaikan studi kasus mencari nilai acak menggunakan bahasa pemograman c++.Tanpa berlama-lama kita langsung masuk ke materi nya Yang pertama yang harus kita lakukan adalah…

Continue reading

One thought on “Grafika Komputer : Implementasi Clipping Polygon

Leave a Reply

Your email address will not be published. Required fields are marked *

You Missed

Tutorial Menambahkan Outline Stroke Pada Teks Di Adobe Photoshop

Tutorial Menambahkan Outline Stroke Pada Teks Di Adobe Photoshop

Cek Windows kamu, Apakah Basis Sistem 32 atau 64 bit

Cek Windows kamu, Apakah Basis Sistem 32 atau 64 bit

Pengertian, Fungsi dan Manfaat Microsoft Word

Pengertian, Fungsi dan Manfaat Microsoft Word

Interkoneksi Antar Komponen

Interkoneksi Antar Komponen

Manjaro Linux : Sejarah, Kelebihan Dan Kekurangannya

Manjaro Linux : Sejarah, Kelebihan Dan Kekurangannya

Manajemen Perangkat I/O : Fungsi, Teknik Dan Komponennya

Manajemen Perangkat I/O : Fungsi, Teknik Dan Komponennya