Tujuan
● Setelah mempelajari modul ini peserta diharapkan dapat:
● Memahami fungsi-fungsi dari Skala,Rotasi dan Translasi
● Mengimplementasikan Skala pada sebuah Object
● Menerapkan Rotasi dan Translasi pada Object
2. Latar Belakang
Pada sebuah game skala rotasi dan translasi sangat dibutuhkan ketika kita
membangun sebuah game yang menggunakan grafik vektor dan bitmap. penggunaannya
seperti pemindahan sebuah object, memperbesar atau memper kecil ukuran peta ataupun
merotasi arah dari object seperti pesawat dll.
3. Percobaan
Percobaan 1: Membuat Class ContohRotasi
ContohRotasi() {
shape = new Rectangle2D.Double(10,40,100,50);
t = new Thread(this);
t.start();
setTitle("Percobaan Rotasi");
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
public void paint(Graphics g) {
Graphics2D g2d=(Graphics2D) g;
AffineTransform identitas = new AffineTransform();
g2d.setColor(Color.BLACK);
g2d.fillRect(0, 0,500,500);
g2d.setTransform(identitas);
for(int i=0;i<360;i++){
g2d.rotate(Math.toRadians(1));
g2d.setColor(new Color(rand.nextInt()));
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
g2d.fill(shape);
}
}
import javax.swing.JFrame;
import java.awt.*;
import java.awt.geom.*;
Polygon poligon,poligon1;
PercobaanPoligon(){
setTitle("Percobaan Poligon");
int titikX[] = {200,100,130,270,300};
int titikY[] = {50,150,270,270,150};
poligon= new Polygon(titikX, titikY, titikX.length);
for(int i=0;i<titikY.length;i++){
titikY[i]=titikY[i]+300;
}
poligon1=new Polygon(titikX, titikY, titikX.length);
setSize(400,600);
setVisible(true);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
g2d.setColor(Color.BLUE);
g2d.draw(poligon);
g2d.setColor(Color.GREEN);
g2d.fill(poligon1);
}
}
import java.awt.*;
import javax.swing.JFrame;
public ScreenManager() {
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = environment.getDefaultScreenDevice();
}
device.setFullScreenWindow(frame);
package jeni7;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
AffineTransform at;
private GraphicsConfiguration gc;
public ImageEfek(){
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
gc = ge.getDefaultScreenDevice().getDefaultConfiguration();
}
Math.max(src.getWidth(),src.getHeight()),Math.max(src.getWidth(),src.getHeight()),
transparency );
Graphics2D g2d = dest.createGraphics();
AffineTransform origAT = g2d.getTransform();
g2d.drawImage(src, 0, 0, null);
g2d.setTransform(origAT);
g2d.dispose();
return dest;
}
g2d.drawImage(src, 0, 0, null);
g2d.setTransform(origAT);
g2d.dispose();
return dest;
}
Class TestTransformasi
package jeni7;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import jeni6.*;
TestTransformasi(){
setPreferredSize(new Dimension(600,400));
imgEfek= new ImageEfek();
imsMgr= new ImageManager();
imsMgr.setPath("jeniTransform/images");
imsMgr.loadSingleImage("maninhat.gif");
oriImg= imsMgr.getImage("maninhat");
}
try{
Thread.sleep(20);
}catch(Exception e){}
update();
render();
repaint();
}
}
g2d.setColor(Color.gray);
g2d.fillRect(0, 0, getWidth(), getHeight());