TRANSFORMASI Flipping Coin Transformasi Translasi objek dipindah kelokasi
TRANSFORMASI & Flipping Coin
Transformasi • • • Translasi objek dipindah kelokasi baru tanpa mengubah bentuk ukuran atau orientasinya. Skala objek diperbesar/diperkecil. Rotasi/Putar objek diputar terhadap titik tertentu tanpa mengubah bentuk dan ukurannya.
contoh translasi rotasi skala before after
Pengenalan Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. Pada dasarnya, transformasi ini adalah memindahkan objek tanpa merusak bentuk.
Transformasi Affine mempertahankan garis dan bidang. – Mempertahankan keliniearan dan kedatarannya Garis tetap sebagai garis Bidang tetap datar
. . . Transformasi Affine mempertahankan garis dan bidang. – Jika 2 garis paralel dikenakan transformasi yang sama maka hasil setelah transformasi tetap juga paralel. – Demikian juga untuk bidang
gl. Translated Akan ditranslasikan bangunan persegi dengan gl. Translated( x, y, z) dan warnanya diganti dengan warna biru void my. Display(void) { gl. Color 3 f (0. 0, 1. 0, 0. 0); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Color 3 f (0. 0, 1. 0); gl. Push. Matrix(); gl. Translated(150, 0); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Pop. Matrix(); gl. Flush (); }
Coding : #include <windows. h> #include <gl/Gl. h> #include <gl/glut. h> void my. Init(void) { void my. Display(void) { gl. Color 3 f (0. 0, 1. 0, 0. 0); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); void main(int argc, char** argv) { glut. Init(&argc, argv); glut. Init. Display. Mode(GLUT_SINGLE | GLUT_RGB); glut. Init. Window. Size(640, 480); glut. Init. Window. Position(100, 150); gl. Color 3 f (0. 0, 1. 0); glu. Ortho 2 D(0. 0, 640. 0, 480. 0); } gl. Push. Matrix(); gl. Translated(150, 0); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Pop. Matrix(); gl. Flush (); } glut. Create. Window("transformasi"); glut. Display. Func(my. Display); my. Init(); glut. Main. Loop(); }
gl. Rotate Bangun persegi diputar gl. Rotate(degrees, x, y, z); , warnanya diganti dengan warna merah. void my. Display(void) { gl. Color 3 f (0. 0, 1. 0); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Color 3 f (1. 0, 0. 0); gl. Push. Matrix(); gl. Rotatef(30. 0 f, 1. 0 f); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Pop. Matrix(); gl. Flush (); }
Coding : #include "stdafx. h" #include <windows. h> #include <gl/Gl. h> #include <gl/glut. h> void my. Init(void) { glu. Ortho 2 D(0. 0, 640. 0, 480. 0); } void my. Display(void) { gl. Color 3 f (0. 0, 1. 0); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Color 3 f (1. 0, 0. 0); gl. Push. Matrix(); gl. Rotatef(30. 0 f, 1. 0 f); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Pop. Matrix(); gl. Flush (); } void main(int argc, char** argv) { glut. Init(&argc, argv); glut. Init. Display. Mode(GLUT_SINGLE | GLUT_RGB); glut. Init. Window. Size(640, 480); glut. Init. Window. Position(100, 150); glut. Create. Window("transformasi"); glut. Display. Func(my. Display); my. Init(); glut. Main. Loop(); }
gl. Scaled Atau diskala gl. Scaled(x, y, z); dan warnanya diganti dengan kuning. void my. Display(void) { gl. Color 3 f (0. 0, 1. 0); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Color 3 f (1. 0, 0. 0); gl. Push. Matrix(); gl. Scalef(0. 5 f, 1. 0 f); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Pop. Matrix(); gl. Flush (); }
Coding : #include "stdafx. h" <windows. h> <gl/Gl. h> <gl/glut. h> void my. Init(void) { glu. Ortho 2 D(0. 0, 640. 0, 480. 0); } void my. Display(void) { gl. Color 3 f (0. 0, 1. 0); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Color 3 f (1. 0, 0. 0); gl. Push. Matrix(); gl. Scalef(0. 5 f, 1. 0 f); gl. Rectf (300. 0, 200. 0, 400. 0, 300. 0); gl. Pop. Matrix(); gl. Flush (); } void main(int argc, char** argv) { glut. Init(&argc, argv); glut. Init. Display. Mode(GLUT_SINGLE | GLUT_RGB); glut. Init. Window. Size(640, 480); glut. Init. Window. Position(100, 150); glut. Create. Window("transformasi"); glut. Display. Func(my. Display); my. Init(); glut. Main. Loop(); }
Coding Flipping Coin : #include <stdlib. h> #include <math. h> #include <gl/glut. h> const double phi = 3. 141592653589793; int A; float sudut = 0; void lingkaran(int jari 2, int titik, int lebar, int tinggi) { gl. Begin(GL_POLYGON); for (A = 0; A <= 400; A++) { float sudut = A * (2 * phi / titik); float x = lebar + jari 2 * cos(sudut); float y = tinggi + jari 2 * sin(sudut); gl. Vertex 2 f(x, y); } gl. End(); } void shape() { gl. Begin(GL_POLYGON); gl. Push. Matrix(); lingkaran(1, 320, 0, 0); gl. Pop. Matrix(); void timer(int value) { sudut -= -0. 06; glut. Post. Redisplay(); glut. Timer. Func(1, timer, 0); } gl. End(); } void main(int argc, char**argv) { glut. Init(&argc, argv); glut. Init. Display. Mode(GLUT_SINGLE | GLUT_RGB); glut. Init. Window. Size(640, 480); glut. Init. Window. Position(100, 150); glu. Ortho 2 D(-1000, 1000); glut. Create. Window("Tranformasi"); glut. Display. Func(my. Display); glut. Timer. Func(100, timer, 0); glut. Main. Loop(); }s void my. Display(void) { gl. Clear(GL_COLOR_BUFFER_BIT); gl. Clear. Color(1. 0, 1. 0); gl. Push. Matrix(); gl. Scalef(sudut*0. 001, 1. 0 f); gl. Translated(sudut / 500, 0. 2, 0); gl. Rotated(sudut * 100, 0, sudut, 0); gl. Color 3 f(sudut*0. 003, 1 - sudut * 0. 001); shape(); gl. Pop. Matrix(); gl. Flush(); }
- Slides: 16