Npm : 2012 4350 1228
Nama : Syahroni
Kelas : R7H
Mata Kuliah : Komputer Grafik
Dosen : Nahot Frastian, M.Kom
Program Studi : Teknik Informatika
Universitas : Universitas Indraprasta PGRI
1. Npm : 201243501228
Nama : Syahroni
Kelas : R7H
Mata Kuliah : Komputer Grafik
Dosen : Nahot Frastian , M.Kom
Program Studi : Teknik Informatika
Universitas : Universitas Indraprasta Pgri
2. Program Komputer Grafik :
- Soal no 3
Input :
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class tugasno3 extends JApplet {
public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new tugasno3();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}
public void init() {
JPanel panel = new Pan();
getContentPane().add(panel);
}
class Pan extends JPanel {
public Pan() {
setPreferredSize(new Dimension(600, 600));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g1 = (Graphics2D) g;
Graphics2D g2 = (Graphics2D) g;
kotak(g2);
//GradientPaint paint1 = new GradientPaint(100, 100, new Color(130,
36, 2), 250, 100, new Color(253, 149, 51));
3. kotak_brass(g2, 50, 320, 350, 370);
kotak_brass(g2, 250, 320, 350, 370);
budermidpoint(g2, 50, 50, 50);
garisdda(g2, 100, 20, 200, 20);
garisdda(g2, 110, 60,200,90);
garisdda(g2, 90, 100,170,160);
garisdda(g2, 50, 120,100,190);
body(g2);
int x[] = {0,250, 500};
int y[] = {320, 180, 320};
Polygon sgtga = new Polygon(x,y,3);
g2.setPaint(Color.red);
g2.fill(sgtga);
Rectangle2D rec= new Rectangle2D.Double(80,370,60,100);
g2.setColor(Color.GRAY);
g2.fill(rec);
Rectangle2D rect= new Rectangle2D.Double(190,350,50,50);
g2.setColor(Color.yellow);
g2.fill(rect);
bundermidpoint2(g2, 125, 405, 7);
Rectangle2D rec1= new Rectangle2D.Double(280,370,60,100);
g2.setColor(Color.gray);
g2.fill(rec1);
Rectangle2D rect1= new Rectangle2D.Double(360,350,60,60);
g2.setColor(Color.yellow);
g2.fill(rect1);
bundermidpoint2(g2, 325, 405, 7); }
public void body(Graphics2D g) {
GeneralPath gp = new GeneralPath();
GradientPaint p = new GradientPaint(0, 350, Color.gray, 50, 30,
Color.black);
g.setPaint(p);
gp.moveTo(280, 470);
gp.lineTo(220, 600);
gp.lineTo(370,600);
gp.lineTo(340,470);
gp.closePath();
g.fill(gp);
} public void kotak_brass(Graphics2D gr, int x_awal, int y_awal, int
x_akhir, int y_akhir) {
4. GeneralPath gp = new GeneralPath();
Shape s = new Rectangle2D.Double(x_awal, y_awal, 200, 150);
GradientPaint p = new GradientPaint(250, 400, Color.magenta, 550, 200,
Color.white);
gr.setPaint(p);
gr.fill(s);
int Dx = Math.abs(x_akhir - x_awal);
int Dy = Math.abs(y_akhir - y_awal);
int parameter = (2 * Dy) - Dx;
String status = "Kotak_BM";
this.repaint();
double g = x_awal, h = y_awal;
while (x_awal < x_akhir) {
if (parameter < 0) {
parameter += (2 * Dy);
} else {
y_awal++;
parameter = parameter + (2 * Dy) - (2 * Dx);
}
gp.moveTo(x_awal, y_awal);
x_awal++;
}
gp.lineTo(g, y_awal);
gp.lineTo(g, h);
gp.lineTo(x_awal, h);
gp.lineTo(x_awal, y_awal);
gp.closePath();
gr.draw(gp);
}
public void kotak_brass2(Graphics2D gr, int x_awal, int y_awal, int
x_akhir, int y_akhir) {
GeneralPath gp2 = new GeneralPath();
Shape s2 = new Rectangle2D.Double(x_awal, y_awal, 20, 130);
gr.setPaint(new Color(153, 102, 0));
gr.fill(s2);
int Dx = Math.abs(x_akhir - x_awal);
int Dy = Math.abs(y_akhir - y_awal);
int parameter = (2 * Dy) - Dx;
String status = "Kotak_BM";
5. this.repaint();
double g = x_awal, h = y_awal;
while (x_awal < x_akhir) {
if (parameter < 0) {
parameter += (2 * Dy); } else {
y_awal++;
parameter = parameter + (2 * Dy) - (2 * Dx); }
gp2.moveTo(x_awal, y_awal);
x_awal++; }
gp2.lineTo(g, y_awal);
gp2.lineTo(g, h);
gp2.lineTo(x_awal, h);
gp2.lineTo(x_awal, y_awal);
gp2.closePath();
gr.draw(gp2); }
public void garisdda(Graphics2D g, int x1, int y1, int x2, int y2) {
double m = (double) (y2 - y1) / (x2 - x1);
double y = (double) y1;
int iy;
for (int x = x1; x <= x2; x++) {
iy = (int) Math.round(y);
g.drawLine(x, iy, x, iy);
y += m; } } }
public void kotak(Graphics2D g) {
Shape s = new Rectangle2D.Double(0, 0, 1300, 550);
GradientPaint p = new GradientPaint(0, 350, new Color(0, 255, 255), 50,
30, new Color(70, 51, 204));
g.setPaint(p);
g.fill(s);
Shape s1 = new Rectangle2D.Double(0, 370, 1300, 250);
GradientPaint r = new GradientPaint(0, 250, Color.gray, 700, 600,
Color.white);
g.setPaint(r);
g.fill(s1); }
void budermidpoint(Graphics2D g, int x1, int y1, int r) {
Shape s = new Ellipse2D.Double(x1 - r, y1 - r, r * 2, r * 2);
g.setColor(Color.orange);
g.fill(s);
int x = 0, y = r, p = 1 - r;
int xctr = x1, yctr = y1;
6. g.drawLine(xctr + x, yctr + y, xctr + x, yctr + y);
g.drawLine(xctr - x, yctr + y, xctr - x, yctr + y);
g.drawLine(xctr + x, yctr - y, xctr + x, yctr - y);
g.drawLine(xctr - x, yctr - y, xctr - x, yctr - y);
g.drawLine(xctr + y, yctr + x, xctr + y, yctr + x);
g.drawLine(xctr - y, yctr + x, xctr - y, yctr + x);
g.drawLine(xctr + y, yctr - x, xctr + y, yctr - x);
g.drawLine(xctr - y, yctr - x, xctr - y, yctr - x);
while (x < y) {
x++;
if (p < 0) {
p += 2 * x + 1;
} else {
y--;
p += 2 * (x - y) + 1;
}
}
}
void bundermidpoint(Graphics2D g, int x1, int y1, int r) {
Shape s = new Ellipse2D.Double(x1 - r, y1 - r, r * 2, r * 2);
g.setColor(Color.cyan);
g.fill(s);
int x = 0, y = r, p = 1 - r;
int xctr = x1, yctr = y1;
g.drawLine(xctr + x, yctr + y, xctr + x, yctr + y);
g.drawLine(xctr - x, yctr + y, xctr - x, yctr + y);
g.drawLine(xctr + x, yctr - y, xctr + x, yctr - y);
g.drawLine(xctr - x, yctr - y, xctr - x, yctr - y);
g.drawLine(xctr + y, yctr + x, xctr + y, yctr + x);
g.drawLine(xctr - y, yctr + x, xctr - y, yctr + x);
g.drawLine(xctr + y, yctr - x, xctr + y, yctr - x);
g.drawLine(xctr - y, yctr - x, xctr - y, yctr - x);
while (x < y) {
x++;
if (p < 0) {
p += 2 * x + 1;
} else {
y--;
p += 2 * (x - y) + 1;
}
7. }
}
void bundermidpoint2(Graphics2D g, int x1, int y1, int r) {
Shape s = new Ellipse2D.Double(x1 - r, y1 - r, r * 2, r * 2);
g.setColor(Color.darkGray);
g.fill(s);
int x = 0, y = r, p = 1 - r;
int xctr = x1, yctr = y1;
g.drawLine(xctr + x, yctr + y, xctr + x, yctr + y);
g.drawLine(xctr - x, yctr + y, xctr - x, yctr + y);
g.drawLine(xctr + x, yctr - y, xctr + x, yctr - y);
g.drawLine(xctr - x, yctr - y, xctr - x, yctr - y);
g.drawLine(xctr + y, yctr + x, xctr + y, yctr + x);
g.drawLine(xctr - y, yctr + x, xctr - y, yctr + x);
g.drawLine(xctr + y, yctr - x, xctr + y, yctr - x);
g.drawLine(xctr - y, yctr - x, xctr - y, yctr - x);
while (x < y) {
x++;
if (p < 0) {
p += 2 * x + 1;
} else {
y--;
p += 2 * (x - y) + 1;
}
}
}
public void bunder(Graphics2D g, int x1, int y1, int r) {
Shape s = new Ellipse2D.Double(x1 - r, y1 - r, r * 2, r * 2);
GradientPaint p = new GradientPaint(x1, y1, Color.orange, x1 + 200, y1 +
50, Color.red);
g.setPaint(p);
g.fill(s);
}
public void awane(Graphics2D g2, int x, int y) {
GeneralPath gp = new GeneralPath();
gp.moveTo(30 + x, 80 + y);
gp.curveTo(-5 + x, 60 + y, 22 + x, 15 + y, 40 + x, 42 + y);
gp.curveTo(37 + x, 31 + y, 53 + x, 31 + y, 58 + x, 43 + y);
8. gp.curveTo(60 + x, 7 + y, 116 + x, 4 + y, 100 + x, 34 + y);
gp.curveTo(150 + x, 29 + y, 150 + x, 89 + y, 120 + x, 90 + y);
gp.curveTo(100 + x, 120 + y, 95 + x, 97 + y, 87 + x, 100 + y);
gp.curveTo(71 + x, 120 + y, 35 + x, 100 + y, 35 + x, 70 + y);
gp.closePath();
gp.closePath();
g2.setPaint(new GradientPaint(0 + x, 20 + y, Color.lightGray, 0 + x, 150 +
y, Color.white));
g2.fill(gp);
g2.setColor(Color.white);
g2.draw(gp);}}