Anda di halaman 1dari 6

PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN 2

NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Transformasi 2D
TUGAS : Membuat program gabungan refleksi dan shear

2.1 Tujuan
1. Praktikkan mampu mengerti transformasi 2D
2. Praktikkan dapat memahami transformasi shear
3. Praktikan mampu memahami tentang refleksi

2.2 Alat dan Bahan


1. Laptop
2. Visual Studio 2013
3. OpenGL
4. Modul Grafika Komputer 2020

2.3 Landasan Teori


Refleksi dalam transformasi geometri ini dapat dikatakan pencerminan. Refleksi
adalah transformasi yang membuat mirror (pencerminan) dari image suatu objek. Image
mirror untuk refleksi 2D dibuat relatif terhadap sumbu dari refleksi dengan memutar
180 derajat terhadap refleksi. Sumbu refleksi dapat dipilih pada bidang x,y. Dan refleksi
ini sama dengan kita memutar 180 derajat pada bidang xy dan dengan koordinat
menggunakan titik pusat koordinat sebagai pivot point.

Gambar 2.1 Contoh refleksi pada gambar 2D


Shear merupakan bentuk transformasi yang membuat distorsi dari bentuk suatu
objek, seperti menggeser sisi tertentu..Shear adalah suatu proses untuk
mentransformasikan objek dengan cara “membebani” objek tersebut kearah tertentu,
sehingga dihasilkan suatu objek yang distorsi. Dua macam shear yang umum adalah
shear menurut sumbu x dan shear menurut sumbu y. Dengan kata lain shear yaitu
menarik titik – titik koordinat tertentu pada objek kesuatu arah berdasarkan sumbu x
atau y.

Terhadap sumbu x :
Terhadap sumbu y :

Gambar 2.2 Contoh penggunaan shear pada gambar 2D

Persegi panjang ABCD dengan koordinat A(1, 1), B(4, 1), C(4, 6), D(1, 6) digusur:
1. menurut arah sumbu X (invariant sumbu X) dengan faktor skala k = 2 menjadi
persegi panjang A2B2C2D2 dengan koordinat A2(3, 1), B2(6, 1), C2(16, 6),
D2(13, 6)

2. menurut arah sumbu Y (invariant sumbu Y) dengan faktor skala k = 2 menjadi


persegi panjang A3B3C3D3 dengan koordinat A3(1, 3), B3(4, 9), C3(4, 14),
D3(1, 8)

Pengaruh nilai k:
1. Untuk gusuran menurut arah sumbu X → k positif arahnya ke kanan, k negatif
arahnya ke kiri

2. Untuk gusuran menurut arah sumbu Y → k positif arahnya ke atas, k negatif


arahnya ke bawah
2.4 Langkah – langkah Tugas
Source code
Header.h :
#include<stdio.h>
#include<math.h>
#include<iostream>
#include<vector>
#include<glut.h>
using namespace std;

int pntX1, pntY1, choice = 0, edges;


vector<int> pntX;
vector<int> pntY;
char reflectionAxis, shearingAxis;
int shearingX, shearingY;
void drawPolygon()
{
glBegin(GL_POLYGON);
glColor3f(1.0, 0.0, 0.0);
for (int i = 0; i < edges; i++)
{
glVertex2i(pntX[i], pntY[i]);
}
glEnd();
glFlush();
}

void drawPolygonMirrorReflection(char reflectionAxis)


{
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 1.0);
for (int i = 0; i < edges; i++)
{
glVertex2i((pntX[i]), (pntY[i] * -1));
}

glEnd();
glFlush();
}

void myInit(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glColor3f(0.0f, 0.0f, 0.0f);
glPointSize(4.0);
gluOrtho2D(-10.0, 10.0, -10.0, 10.0);
}

void myDisplay()
{
drawPolygon();
drawPolygonMirrorReflection(reflectionAxis);
}
Source.cpp :
#include "Header.h"

void main(int argc, char** argv)


{

cout << "masukan jumlah titik : "; cin >> edges;


for (int i = 0; i < edges; i++)
{
cout << "masukan koordinat :" << i + 1 << ":";
cin >> pntX1 >> pntY1;
pntX.push_back(pntX1);
pntY.push_back(pntY1);
}
cout << reflectionAxis;

glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 150);
glutCreateWindow("1818017");
glutDisplayFunc(myDisplay);
myInit();
glutMainLoop();
}

Tampilan hasil :

Gambar 2.3 Tampilan hasil running program gabungan refleksi dan shear

Analisa :
Gambar 2.3 diatas merupakan tampilan hasil dari transformasi shear. Bayangan
terletak di bawah object. Transformasi shear hanya memiliki 2 koordinat yaitu sumbu x
dan sumbu y.
Tabel 2.1 Fungsi OpenGL
No Fungsi Pengertian Contoh Penggunaan
1 glBegin Memulian menggambar glBegin()
dalam bentuk garis
2 GL_POLYGON Fungsi yang mirip (GL_POLYGON);
dengan polylinetapu
menghasilkan kurba
tertutup dengan blok
warna (fill)
3 glColor4f Memberi warna titik 3 glColor3f(0.0, 0.0, 1.0);
dimensi
4 glVertex2i Fungsi untuk glVertex2i(10,10);
menggambarkan titik
pada koordinat x dan y
dengan nilai satuan
integer
5 glEnd Mengakhiri glEnd();
penggambaran sebuah
garis
6 glFlush Rendering glFlush();
7 glPointSize Mengatur besarnya glPointSize(4.0);
suatu objek
8 gluOrtho2D Mengatur proyeksi gluOrtho2D(-10.0, 10.0, -
hasil eksekusi dan 10.0, 10.0);
mendefinisikan
besarnya sistem
koordinat dengan
urutan kiri – kanan dan
bawah - atas
9 glClearColor Menandakan warna apa glClearColor(1.0, 1.0, 1.0,
yang digunakan 0.0);
2.5 Kesimpulan
1. Image mirror untuk refleksi 2D dibuat relatif terhadap sumbu dari refleksi
dengan memutar 180 derajat terhadap refleksi.
2. Refleksi ini sama dengan kita memutar 180 derajat pada bidang xy dan dengan
koordinat menggunakan titik pusat koordinat sebagai pivot point.
3. Dua macam shear yang umum adalah shear menurut sumbu x dan shear menurut
sumbu y.

Nilai Asisten Lab

Anda mungkin juga menyukai