Nama : Lukas Sako
Nim : 11110080
Kelas : B
Nim : 11110080
Kelas : B
MID TEST GRAFIKA KOMPUTER
SOAL
:
1. Rotasi titik A,B,C
terhadap titik X(200,200) dengan sudut pusat 45 derajat.
2. Translasi terhadap T(50 dan 100) dari kedua nomor
tersebut:
a.
Buatlah lisning
programnya !
b.
Tentukan
titik-titik hasil rotasi A translasinya
!!!
JAWAB
:
1. Rotasi titik A,B,C
terhadap titik X(200,200) dengan sudut pusat 45 derajat
Berikut ini lisning program untuk membuat rotasi:
package LUKAS_SAKO;
import java.awt.*;
import
java.awt.event.*;
public class MID_ROTASI
extends Frame implements ActionListener{
int x = 200;
int y = 200;
public static void
main(String[] args) {
Frame frame = new MID_ROTASI();
frame.setSize(640, 480);
frame.setVisible(true);
}
public MID_ROTASI() {
setTitle("MID_ROTASI");
// create menu
MenuBar mb = new MenuBar();
setMenuBar(mb);
Menu menu = new Menu("File");
mb.add(menu);
MenuItem mi = new
MenuItem("Exit");
mi.addActionListener(this);
menu.add(mi);
// end program when
window is closed
WindowListener l = new WindowAdapter() {
@Override
public void windowClosing(WindowEvent ev) {
System.exit(0);
}
};
this.addWindowListener(l);
// mouse event handler
MouseListener
mouseListener = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent
ev) {
x = ev.getX();
y = ev.getY();
repaint();
}
};
addMouseListener(mouseListener);
}
@Override
public void
paint(Graphics g) {
int xasalA = 150; int
yasalA = 100;
int xasalB = 100; int
yasalB = 250;
int xasalC = 200; int yasalC
= 250;
int sudut = 45;
g.setColor(Color.red);
g.drawLine(xasalA,yasalA,
xasalB,yasalB);
g.drawLine(xasalB,yasalB,xasalC,yasalC);
long xA =
Math.round(x+(xasalA-x)*Math.cos(sudut)-(yasalA-y)*Math.sin(sudut));
long yA =
Math.round(x+(xasalA-x)*Math.sin(sudut)-(yasalA-y)*Math.cos(sudut));
long xB =
Math.round(x+(xasalB-x)*Math.cos(sudut)-(yasalB-y)*Math.sin(sudut));
long yB =
Math.round(x+(xasalB-x)*Math.sin(sudut)-(yasalB-y)*Math.cos(sudut));
long xC =
Math.round(x+(xasalC-x)*Math.cos(sudut)-(yasalC-y)*Math.sin(sudut));
long yC =
Math.round(x+(xasalC-x)*Math.sin(sudut)-(yasalC-y)*Math.cos(sudut));
int xA1 = (int)xA; int
yA1 = (int)yA;
int xB1 = (int)xB; int
yB1 = (int)yB;
int xC1 = (int)xC; int
yC1 = (int)yC;
g.drawLine(xA1,yA1,
xB1,yB1);
g.drawLine(xB1,yB1,
xC1,yC1);
}
@Override
public void
actionPerformed(ActionEvent ev) {
String command =
ev.getActionCommand();
if
("Exit".equals(command)) {
System.exit(0);
}
}
}
Dan berikut adalah hasilnya setelah diruning
1. Translasi terhadap T(50 dan 100) dari kedua nomor
tersebut
a.
Lisning program
untuk membuat translasi sebagai berikut:
package LUKAS_SAKO;
import java.awt.*;
import
java.awt.event.*;
public class TRANSLASI
extends Frame implements ActionListener{
int x = 50;
int y = 100;
public static void
main(String[] args) {
Frame frame = new TRANSLASI();
frame.setSize(640, 480);
frame.setVisible(true);
}
public TRANSLASI() {
setTitle("MID
TRANSLASI");
// create menu
MenuBar mb = new MenuBar();
setMenuBar(mb);
Menu menu = new Menu("File");
mb.add(menu);
MenuItem mi = new
MenuItem("Exit");
mi.addActionListener(this);
menu.add(mi);
// end program when
window is closed
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
System.exit(0);
}
};
this.addWindowListener(l);
// mouse event handler
MouseListener
mouseListener = new MouseAdapter() {
public void
mouseClicked(MouseEvent ev) {
int x = 50;
int y = 100;
repaint();
}
};
addMouseListener(mouseListener);
}
public void
paint(Graphics g) {
g.drawLine(80, 80, 150,
200);
g.drawLine(80+x, 80+y,
150+x, 200+y);
}
public void
actionPerformed(ActionEvent ev) {
String command =
ev.getActionCommand();
if
("Exit".equals(command)) {
System.exit(0);
}
}
}
b.
titik-titik
hasil rotasi A translasinya dan hasilnya
seperti berikut
kita juga punya nih artikel mengenai 'Grafik Komputer', silahkan dikunjungi dan dibaca , berikut linknya
BalasHapushttp://repository.gunadarma.ac.id/bitstream/123456789/836/1/D87-D95_Yusuf.pdf
trimakasih
semoga bermanfaat