Jumat, 20 Maret 2009

Modul 4
TRANSFORMASI OBYEK 2 DIMENSI


Pada praktikum ini yang dilakukan adalah membuat sebuah project Transformasi Objek 2 Dimensi, seperti form yang ada di bawah ini :

Grafika computer merupakan bidang yang menarik minat banyak orang. Salah satu sub bagian dari grafika adalah pemodelan objek. Dalam pemodelan objek 2D, berbagai objek dimodifikasi dengan melakukan berbagai operasi fungsi atau operasi transformasi geometri. Transformasi ini dapat berupa transformasi dasar ataupun gabungan dari berbagai transformasi geometri. Transformasi ini dikenal dengan Transformasi affine. Pada dasarnya, transformasi merupakan suatu operasi modifikasi bentuk objek tanpa merusak bentuk dasar dari objek. Salah satu contoh transformasi adalah transformasi dari window ke viewport.

Langkah-Langkah Transformasi Viewing 2 Dimensi

    1. Pembentukan scene pada WC menggunakan output primitif atribut.

    2. Untuk mendapatkan orientasi tertentu dari window, maka ditentukan sistem VC 2 dimensi pada WC. Frame digunakan untuk melengkapi penentuan orientasi dari windows persegi empat . Setelah frame dibentuk dapat ditransformasikan ke dalam WC untuk menampilkan koordinat.

    3. Kemudian viewport ditentukan dalam normalized NVC (pada batasan antara 0 dan 1) dan memetakan deskripsi VC dari scene pada Normalized Coordinate.

    4. Akhirnya dilakukan clipping (pemotongan) pada semua gambar yang ada diluar viewport.

    1. Macam-macam transformasi:

      1. Transformasi Objek, yang ditransformasikan titik-titik yang menyusun objek tersebut.

      2. Transformasi Koordinat, yang diubah system koordinatnya sehingga objek mengalami transformasi dikarenakan perubahan system koordinat tersebut.


    1. Tujuan Transformasi :

      1. Merubah atau menyesuaikan komposisi pandangan.

      2. Memudahkan membuat objek yang simetris

      3. Melihat objek dari sudut pandang berbeda

      4. Memindahkan satu atau beberapa objek dari satu tempat ke tempat lain, biasanya digunakan pada animasi computer.

Pembuatan Antarmuka:












Scrip Program :

Unit1.cpp

//---------------------------------------------------------------------------

#include 'vcl.h'

#include 'math.h'

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

struct Elemen { float x,y ;} ;

Elemen Objek[6];

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)

{ int i;

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);

Image1->Canvas->MoveTo(Objek[5].x,Objek[5].y);

for (i=1;i<=5;i++){ Image1->Canvas->LineTo(Objek[i].x,Objek[i].y);};

}

//========================================================================

void __fastcall TForm1::FormActivate(TObject *Sender)

{ Objek[1].x = 100; Objek[1].y = 50;

Objek[2].x = 50; Objek[2].y = 100;

Objek[3].x = 100; Objek[3].y = 100;

Objek[4].x = 100; Objek[4].y = 150;

Objek[5].x = 150; Objek[5].y = 100;

FormShow(Sender);

}

//========================================================================

void __fastcall TForm1::Button3Click(TObject *Sender)

{ int i;

for (i=1;i<=5;i++){ Objek[i].x+=5;};

FormShow(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

int i;

for (i=1;i<=5;i++){ Objek[i].y+=5;};

FormShow(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int i;

for (i=1;i<=5;i++){ Objek[i].y-=5;};

FormShow(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

int i;

for (i=1;i<=5;i++){ Objek[i].x-=5;};

FormShow(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)

{

Elemen TempObjek[6];

int i; float Sdt;

for (i=1;i<=5;i++)

{ Objek[i].x=Objek[i].x-Image1->Width / 2;

Objek[i].y=Objek[i].y-Image1->Height / 2;

Sdt=10*M_PI/180;

TempObjek[i].x=(Objek[i].x*cos(Sdt)-Objek[i].y*sin(Sdt));

TempObjek[i].y=(Objek[i].x*sin(Sdt)+Objek[i].y*cos(Sdt));

Objek[i]=TempObjek[i];

Objek[i].x=Objek[i].x+Image1->Width / 2;

Objek[i].y=Objek[i].y+Image1->Height / 2;

} FormShow(Sender);

}

//---------------------------------------------------------------------------


void __fastcall TForm1::Button6Click(TObject *Sender)

{

Elemen TempObjek[6];

int i,n,m; float Sdt;

for (i=1;i<=5;i++)

{

n = Objek[3].x;

m = Objek[3].y;

Objek[i].x=Objek[i].x-n;

Objek[i].y=Objek[i].y-m;

Sdt=10*M_PI/180;

TempObjek[i].x=(Objek[i].x*cos(Sdt)-Objek[i].y*sin(Sdt));

TempObjek[i].y=(Objek[i].x*sin(Sdt)+Objek[i].y*cos(Sdt));

Objek[i]=TempObjek[i];

Objek[i].x=Objek[i].x+n;

Objek[i].y=Objek[i].y+m;

}

FormShow(Sender);

}

//---------------------------------------------------------------------------

Unit.h

//---------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include 'Classes.hpp'

#include 'Controls.hpp'

#include 'StdCtrls.hpp'

#include 'Forms.hpp'

#include 'ExtCtrls.hpp'

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TImage *Image1;

TPanel *Panel1;

TButton *Button1;

TButton *Button2;

TButton *Button3;

TButton *Button4;

TButton *Button5;

TButton *Button6;

void __fastcall FormShow(TObject *Sender);

void __fastcall FormActivate(TObject *Sender);

void __fastcall Button3Click(TObject *Sender);

void __fastcall Button4Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall Button5Click(TObject *Sender);

void __fastcall Button6Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif


OUTPUT :

Tidak ada komentar: