Minggu, 24 Juni 2012

tugas 4 (Buat bentuk dengan Algoritma DDA, Bresenheim dan Midpoint)

 Ini  adalah  Source code  untuk  buat bentuk Garis dengan Algoritma DDA


 public void drawline_DDA(Graphics g) {
        super.paintComponents(g);
        int langkah;
        int xInc, yInc;
        int x0 = 120,
                y0 = 230;
        int x1 = 270, y1 = 230;
        int x = x0, y = y0;
        int dx = x1 - x0,
                dy = y1 - y0;

        if (Math.abs(dx) > Math.abs(dy)) {
            langkah = Math.abs(dx);
        } else {
            langkah = Math.abs(dy);
        }

        xInc = dx / langkah;
        yInc = dy / langkah;

        for (x = x0; x < x1; x++) {
            x += xInc;
            y += yInc;
            putPixel(g, Math.round(x), Math.round(y), Color.black, 6);
        }
    }

Outputnya  kaya gini nih




Ini  adalah  Source code  untuk  buat bentuk Garis dengan Algoritma  Bresenheim


 void drawLine_bresenham(Graphics g) {
        super.paintComponents(g);

        int xa = 120, xb = 270, ya = 230, yb = 230, p, x, y, xend;
        int dx = Math.abs(xb - xa);
        int dy = Math.abs(yb - ya);

        p = (2 * dy) - dx;
        if (xa > xb) {
            x = xb;
            y = yb;
            xend = xa;
        } else {
            x = xa;
            y = ya;
            xend = xb;
        }
        putPixel(g, Math.round(x), Math.round(y), Color.black, 1);

        for (x = xa; x < xend; x++) {
            if (p < 0) {
                p = p + (2 * dy);
            } else {
                y = y + 1;
                p = p + (2 * (dy - dx));
            }
            putPixel(g, Math.round(x), Math.round(y), Color.black, 1);
        }
    }

Output Nya  kaya gini  nih








Ini  adalah  Source code  untuk  buat bentuk Lingkaran dengan Algoritma  Midpoint


  public void algoritma_midpoint(Graphics g) {
        super.paintComponents(g);
        int r = 50;
        int x = 0, y = r, p = 1 - r, i = 1;

        plotCirclePoints(g, x, y, Color.BLACK, 1);
        while (x < y) {
            x++;
            if (p < 0) {
                p += 2 * x + 1;
            } else {
                p += 2 * (x - y) + 1;
                y--;
            }
            plotCirclePoints(g, x, y, Color.BLACK, 1);
            i++;
        }
    }

    private void putPixel(Graphics g, int x, int y, Color color, int size) {
        try {
            Graphics g2 = (Graphics2D) g;
            g2.setColor(color.black);
            g2.fillRect(x, y, size, size);
            int pixX = Math.abs(x);
            int pixY = Math.abs(y);
            pixel[pixX][pixY] = color;
        } catch (IndexOutOfBoundsException ex) {
        } catch (Exception ex2) {
        }
    }

    private void plotCirclePoints(Graphics g, int x, int y, Color color, int size) {
        int xCenter = 200, yCenter = 250;
        putPixel(g, xCenter + x, yCenter + y, color, size);
        putPixel(g, xCenter - x, yCenter + y, color, size);
        putPixel(g, xCenter + x, yCenter - y, color, size);
        putPixel(g, xCenter - x, yCenter - y, color, size);
        putPixel(g, xCenter + y, yCenter + x, color, size);
        putPixel(g, xCenter - y, yCenter + x, color, size);
        putPixel(g, xCenter + y, yCenter - x, color, size);
        putPixel(g, xCenter - y, yCenter - x, color, size);
    }

Output Nya kaya gini nih




Ini  adalah  Source code  untuk  buat bentuk Elips dengan Algoritma  Midpoint


  public void drawEllipseMidpoint(Graphics g) {
        int rx = 50, ry = 90;

        int rx2 = rx * rx, ry2 = ry * ry;
        int twoRx2 = 2 * rx2, twoRy2 = 2 * ry2;
        int p, x = 0, y = ry, px = 0, py = twoRx2 * y, i = 0;

        plotEllipsePoints(g, x, y, Color.BLACK, 1);


        p = (int) Math.round(ry2 - (rx2 * ry) + (0.25 * rx2));
        while (px < py) {
            x++;
            px += twoRy2;
            if (p < 0) {
                p += ry2 + px;
            } else {
                y--;
                py -= twoRx2;
                p += ry2 + px - py;
            }
            plotEllipsePoints(g, x, y, Color.BLACK, 1);
            i++;
        }


        p = (int) Math.round(ry2 * (x + 0.5) * (x + 0.5) + rx2 * (y - 1) * (y - 1) - rx2 * ry2);
        while (y > 0) {
            y--;
            py -= twoRx2;
            if (p > 0) {
                p += rx2 - py;
            } else {
                x++;
                px += twoRy2;
                p += rx2 - py + px;
            }
            plotEllipsePoints(g, x, y, Color.BLACK, 1);
            i++;
        }
    }

    private void plotEllipsePoints(Graphics g, int x, int y, Color color, int size) {
        int xCenter = 200, yCenter = 230;
        putPixel(g, xCenter + x, yCenter + y, color, size);
        putPixel(g, xCenter - x, yCenter + y, color, size);
        putPixel(g, xCenter + x, yCenter - y, color, size);
        putPixel(g, xCenter - x, yCenter - y, color, size);

    }

Output Nya kaya gini nih







Ini  adalah  Source code  untuk  buat bentuk Persegi  dengan Algoritma DDA


 public void kotak_dda(Graphics g) {
        //variable
        int a0, b0, a1, b1, dx, dy, step, tx, ty;
        int x, y, x_tambah, y_tambah;
        //inisial translasi
        tx = 80;
        ty = 70;
        //koordinat titik
        a0 = 70;
        b0 = 70;
        a1 = 200;
        b1 = 200;

        //translasi
        int x0 = a0 + tx;
        int x1 = a1 + tx;
        int y0 = b0 + ty;
        int y1 = b1 + ty;

        dx = x1 - x0;
        dy = y1 - y0;
        x = x0;
        y = y0;
        //faktor pembagi
        if (dx > dy) {
            step = dx;
        } else {
            step = dy;
        }
        x_tambah = dx / step;
        y_tambah = dy / step;

        //menggambar kotak
        for (int k = 0; k < step; k++) {
            x += x_tambah;
            y += y_tambah;



            putPixel(g, Math.round(x), Math.round(y0), Color.black, 1);
            putPixel(g, Math.round(x), Math.round(y1), Color.black, 1);
            putPixel(g, Math.round(x0), Math.round(y), Color.black, 1);
            putPixel(g, Math.round(x1), Math.round(y), Color.black, 1);
        }
    }



Output Nya kaya gini nih

Sabtu, 23 Juni 2012

Tugas 8 (Gambar / Objek 3 Dimensi) Dengan Java

Source code  Nya  


import javax.vecmath.*;
import java.awt.*;
import java.awt.event.*;
import javax.media.j3d.*;
import com.sun.j3d.utils.universe.*;
 import com.sun.j3d.utils.geometry.*;
//________________________________________
import java.applet.*;
  import com.sun.j3d.utils.applet.MainFrame;

  public class Logo extends Applet {
    public static void main(String[] args) {
      new MainFrame(new Logo(), 640, 480);
    }

    public void init() {
      // create canvas
      GraphicsConfiguration gc =
        SimpleUniverse.getPreferredConfiguration();
      Canvas3D cv = new Canvas3D(gc);
      setLayout(new BorderLayout());
      add(cv, BorderLayout.CENTER);
      BranchGroup bg = createSceneGraph();
      bg.compile();
      SimpleUniverse su = new SimpleUniverse(cv);
      su.getViewingPlatform().setNominalViewingTransform();
      su.addBranchGraph(bg);
    }

    private BranchGroup createSceneGraph() {
      BranchGroup root = new BranchGroup();
      TransformGroup spin = new TransformGroup();
      spin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
      root.addChild(spin);

      Transform3D tr = new Transform3D();
      tr.setScale(0.9);
      tr.setRotation(new AxisAngle4d(1, 0, 0, Math.PI/2));
      TransformGroup tg = new TransformGroup(tr);
      spin.addChild(tg);
      // torus
      Shape3D torus = new Torus(0.04, 0.6);
      Appearance ap = new Appearance();
      ap.setMaterial(new Material());
      torus.setAppearance(ap);
      tg.addChild(torus);
      // shared group of 4 arrows
      SharedGroup sg = new SharedGroup();
      Shape3D arrow;
      Transform3D tra;
      TransformGroup tga;
      for (int i = 0; i < 4; i++) {
        arrow = new Shape3D(new Arrow(), ap);
        tra = new Transform3D();
        tra.setRotation(new AxisAngle4d(0, 0, 1, i*Math.PI/2));
        tga = new TransformGroup(tra);
        sg.addChild(tga);
       tga.addChild(arrow);
      }
      // four links to shared group
      Link link = new Link();
      link.setSharedGroup(sg);
      tr = new Transform3D();
      tr.setScale(0.675);
      tg = new TransformGroup(tr);
      tg.addChild(link);
      spin.addChild(tg);

//______________________________________
     link = new Link();
     link.setSharedGroup(sg);
     tr = new Transform3D();
     tr.setScale(0.55);
     tr.setRotation(new AxisAngle4d(0, 0, 1, Math.PI/4));
     tg = new TransformGroup(tr);
     tg.addChild(link);
     spin.addChild(tg);

     link = new Link();
     link.setSharedGroup(sg);
     tr = new Transform3D();
     tr.setScale(0.4);
     tr.setRotation(new AxisAngle4d(0, 0, 1, Math.PI/8));
     tg = new TransformGroup(tr);
     tg.addChild(link);
     spin.addChild(tg);

     link = new Link();
     link.setSharedGroup(sg);
     tr = new Transform3D();
     tr.setScale(0.4);
     tr.setRotation(new AxisAngle4d(0, 0, 1, 3*Math.PI/8));
     tg = new TransformGroup(tr);
     tg.addChild(link);
     spin.addChild(tg);
     // rotation
    
     Alpha alpha = new Alpha(-1, 80000);
     RotationInterpolator rotator =
     new RotationInterpolator(alpha, spin);
     BoundingSphere bounds = new BoundingSphere();
    
     rotator.setSchedulingBounds(bounds);
     spin.addChild(rotator);
     // background and lights
     Background background = new Background(1.0f, 1.0f, 1.0f);
     background.setApplicationBounds(bounds);
     root.addChild(background);
     AmbientLight light = new AmbientLight
       (true, new Color3f(Color.red));
     light.setInfluencingBounds(bounds);
     root.addChild(light);
     PointLight ptlight = new PointLight(new Color3f(Color.white),
     new Point3f(2f,2f,2f), new Point3f(1f,0f,0f));
     ptlight.setInfluencingBounds(bounds);
     root.addChild(ptlight);
     return root;
   }
}



OUTPUT  Nya   kayak  gini

1.  Tampak depan


2.  Tampak samping









Jumat, 22 Juni 2012

Tugas 3 (BENTUK POLINOMIAL) dengan Java

Berikut adalah menggambar bentuk POLINOMIAL menggunakan JFrame Form  yang  memanggilnya melalui perintah tombol (Button)  yang diberi aksi ACTION PERFORMED

SOURCE CODE  nya


package tugas_grafkom3;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.CubicCurve2D;
import java.awt.geom.Line2D;
import java.awt.geom.QuadCurve2D;
import javax.swing.JPanel;


public class grafkom3 extends javax.swing.JFrame {

   
    public grafkom3() {
        initComponents();
    }

   
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        bt_derajat_1 = new javax.swing.JButton();
        bt_derajat_2 = new javax.swing.JButton();
        bt_derajat_3 = new javax.swing.JButton();
        bt_spline = new javax.swing.JButton();
        bt_kontrol = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 325, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 305, Short.MAX_VALUE)
        );

        bt_derajat_1.setText("Derajat 1");
        bt_derajat_1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_derajat_1ActionPerformed(evt);
            }
        });

        bt_derajat_2.setText("Derajat 2");
        bt_derajat_2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_derajat_2ActionPerformed(evt);
            }
        });

        bt_derajat_3.setText("Derajat 3");
        bt_derajat_3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_derajat_3ActionPerformed(evt);
            }
        });

        bt_spline.setText("Spline");
        bt_spline.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_splineActionPerformed(evt);
            }
        });

        bt_kontrol.setText("Titik Kontrol");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(28, 28, 28)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 24, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(bt_kontrol, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(bt_spline, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(bt_derajat_3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(bt_derajat_2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(bt_derajat_1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(41, 41, 41))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(48, 48, 48)
                        .addComponent(bt_derajat_1)
                        .addGap(18, 18, 18)
                        .addComponent(bt_derajat_2)
                        .addGap(18, 18, 18)
                        .addComponent(bt_derajat_3)
                        .addGap(18, 18, 18)
                        .addComponent(bt_spline)
                        .addGap(18, 18, 18)
                        .addComponent(bt_kontrol))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(24, 24, 24)
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(20, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                       

    private void bt_derajat_1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
        jPanel1 = new Derajad_1();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);
    }                                           

    private void bt_derajat_2ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
        jPanel1 = new Derajad_2();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);
    }                                           

    private void bt_derajat_3ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
        jPanel1 = new Derajad_3();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);

    }                                           

    private void bt_splineActionPerformed(java.awt.event.ActionEvent evt) {                                         
        jPanel1 = new spline();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);
    }                                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new grafkom3().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                    
    private javax.swing.JButton bt_derajat_1;
    private javax.swing.JButton bt_derajat_2;
    private javax.swing.JButton bt_derajat_3;
    private javax.swing.JButton bt_kontrol;
    private javax.swing.JButton bt_spline;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration                  
}

class Derajad_1 extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g.create();

        Shape lurus = new Line2D.Double(200,250, 300, 50);
        g2.draw(lurus);
    }
}

class Derajad_2 extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g.create();

        Shape kuadrat = new QuadCurve2D.Double(100,150,175,75,300,150);
        g2.draw(kuadrat);
    }
}

class Derajad_3 extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g.create();

        Shape kubik = new CubicCurve2D.Double(50,150,150, 100,200,250,300,150);
        g2.draw(kubik);

    }
}

class spline extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g.create();

       g2.draw(new CubicCurve2D.Double(30, 140, 50, 10, 120, 180, 190, 30));
       g2.draw(new QuadCurve2D.Double(190, 30, 220, 10, 230, 60));

    }
}



OUTPUT   nya




1.   Derajat  1



2.   Derajat  2

  


3.   Derajat  3



4.   Spline


 5.  Titik kontrol     

             Belum  Pak....  hehe

tugas 2 (BENTUK DASAR dengan PERINTAH TOMBOL) dengan Java

Dibuat dengan menggunakan JFrame Form yang setiap button atau tombol diberi aksi ACTION PERFORMED

SOURCE CODE  nya


import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;


public class grafkom2 extends javax.swing.JFrame {

 
    public grafkom2() {
        initComponents();
    }

   
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTitik = new javax.swing.JButton();
        jPersegi = new javax.swing.JButton();
        jSegitiga = new javax.swing.JButton();
        jGaris = new javax.swing.JButton();
        jLingkaran = new javax.swing.JButton();
        jPolygon = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jTitik.setText("Titik");
        jTitik.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTitikActionPerformed(evt);
            }
        });

        jPersegi.setText("Persegi");
        jPersegi.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jPersegiActionPerformed(evt);
            }
        });

        jSegitiga.setText("Segitiga");
        jSegitiga.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jSegitigaActionPerformed(evt);
            }
        });

        jGaris.setText("Garis");
        jGaris.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jGarisActionPerformed(evt);
            }
        });

        jLingkaran.setText("Lingkaran");
        jLingkaran.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jLingkaranActionPerformed(evt);
            }
        });

        jPolygon.setText("Polygon");
        jPolygon.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jPolygonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 386, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jPolygon, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jGaris, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jTitik, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPersegi, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jLingkaran, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jSegitiga, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(38, 38, 38))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(20, 20, 20)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 293, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jTitik)
                        .addGap(18, 18, 18)
                        .addComponent(jPersegi)
                        .addGap(36, 36, 36)
                        .addComponent(jSegitiga)
                        .addGap(39, 39, 39)
                        .addComponent(jLingkaran)
                        .addGap(30, 30, 30)
                        .addComponent(jGaris)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jPolygon)))
                .addContainerGap(15, Short.MAX_VALUE))
        );

        getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END);

        pack();
    }// </editor-fold>                       
// untuk memberikan aksi
    private void jLingkaranActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
         jPanel1 = new lingkaran();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);
    }                                         

    private void jTitikActionPerformed(java.awt.event.ActionEvent evt) {                                      
// TODO add your handling code here:
        jPanel1 = new titik();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);
    }                                     

    private void jPersegiActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
         jPanel1 = new persegi();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);
    }                                       

    private void jSegitigaActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        jPanel1 = new segitiga();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);
    }                                        

    private void jGarisActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
         jPanel1 = new garis();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);
    }                                     

    private void jPolygonActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        jPanel1 = new polygon();
        jPanel1.repaint();
        jScrollPane1.setViewportView(jPanel1);
        jPanel1.setAutoscrolls(true);
    }                                       

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new grafkom2().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                    
    private javax.swing.JButton jGaris;
    private javax.swing.JButton jLingkaran;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JButton jPersegi;
    private javax.swing.JButton jPolygon;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JButton jSegitiga;
    private javax.swing.JButton jTitik;
    // End of variables declaration                  

    class titik extends JPanel {

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D)g.create();
            Shape titik2 = new Ellipse2D.Double(100, 120, 2, 2);
            g2.setColor(Color.black);
            g2.draw(titik2);

        }

    }

    class persegi extends JPanel {

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D)g.create();
            Shape kotak = new Rectangle2D.Double(50, 60, 150, 150);
            g2.setColor(Color.darkGray);
            g2.fill (kotak);
            g2.draw (kotak);

        }

    }

    class segitiga extends JPanel {

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D)g.create();
             GeneralPath segi3 = new GeneralPath();

        segi3.moveTo(50, 80);
        segi3.lineTo(50, 160);
        segi3.lineTo(160, 160);
        segi3.lineTo(50, 80);
        segi3.closePath();

        g2.setColor(Color.red);
        g2.draw(segi3);
        g2.fill(segi3);
        }

    }

    class lingkaran extends JPanel {

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D)g.create();

          //koordinat sebelumnya  Shape lingkaran2 = new Ellipse2D.Double(5, 50, 80, 80);
            //koornat tugas
              Shape lingkaran2 = new Ellipse2D.Double(300, 207, 80, 80);
            g2.setColor(Color.MAGENTA);
            g2.draw(lingkaran2);
            g2.fill(lingkaran2);

        }
    }
   
    class garis extends JPanel {

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D)g.create();
            Shape garis2 = new Line2D.Double(30, 80, 210, 210);
        g2.setColor(Color.blue);
        g2.draw(garis2);
        } 
    
    }

    class polygon extends JPanel {

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D)g.create();
            GeneralPath segi6 = new GeneralPath();

        segi6.moveTo(30, 130);
        segi6.lineTo(100, 30);
        segi6.lineTo(300, 30);
        segi6.lineTo(370, 130);
        segi6.lineTo(300, 230);
        segi6.lineTo(100, 230);
        segi6.lineTo(30, 130);
        segi6.closePath();

        g2.setColor(Color.ORANGE);
        g2.draw(segi6);
        g2.fill(segi6);
        }
        }

    }


OUTPUT  nya

1.   menampilkan titik



2.   Menampilkan  Persegi







3.   Menampilkan  Segitiga



4.   Menampilkan  Lingkaran



5.  Menampilkan  Garis



6.   Menampilkan  Poligon

Tugas 1 (Bentuk Dasar)

SOURCE CODE  nya


import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author ellia
 */
public class grafkom extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        Graphics2D g2=(Graphics2D) g.create();
        Shape kotak= new Rectangle2D.Double(10, 10, 160, 160);
        g2.setColor(Color.black);
        g2.draw(kotak);
        g2.fill(kotak);
// lingkaran2
        Shape lingkaran2=new Ellipse2D.Double(400,300,100 , 100);
        g2.setColor(Color.blue);
        g2.draw(lingkaran2);
        g2.fill(lingkaran2);

Kamis, 21 Juni 2012

tugas 6 (LUKISAN) dengan Java

 Berikut ini adalah membuat gambar lukisan rumah menggunakan Algoritma  DDA, BRESENHEIM, dan Midpoint

SOURCE CODE nya sebagai berikut

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import javax.swing.*;
import javax.swing.JFrame;

public class lukis extends JPanel {
   
     double x_awal, x_akhir, y_awal, y_akhir, Dx, Dy, parameter, langkah, xincre, yincre, p, x2, y2, x_pusat, y_pusat;
    
    GeneralPath gp =  new GeneralPath();
    GeneralPath gp2 = new GeneralPath();
    GeneralPath gp3 = new GeneralPath();
    GeneralPath gp4 = new GeneralPath();
    GeneralPath gp5 = new GeneralPath();
    GeneralPath gp6 = new GeneralPath();
    GeneralPath gp7 = new GeneralPath();
    GeneralPath gp8 = new GeneralPath();
    GeneralPath gp9 = new GeneralPath();
   
    public lukis () {
        setBackground(Color.white);
        setLayout(null);
    }

    public void gambar_garis_dda(int x_awal, int y_awal, int x_akhir, int y_akhir) {
        this.x_awal = x_awal;
        this.x_akhir = x_akhir;
        this.y_awal = y_awal;

        Dx = Math.abs(x_akhir - x_awal);
        Dy = Math.abs(y_akhir - y_awal);

        if (Dx > Dy) {

            langkah = Dx;

        } else {

            langkah = Dy;

        }

        xincre = (x_akhir - x_awal) / langkah;
        yincre = (y_akhir - y_awal) / langkah;


        gp.moveTo(x_awal, y_awal);
        if (x_akhir - x_awal > 0) {

            for (double x = x_awal; x < x_akhir; x += xincre) {

                gp.lineTo(x, y_awal);
                y_awal += yincre;

            }
        } else {

            for (double x = x_awal; x > x_akhir; x += xincre) {

                gp.lineTo(x, y_awal);
                y_awal += yincre;

            }
        }


    }

     public void gambar_garis_Bressenham(int x_awal, int y_awal, int x_akhir, int y_akhir) {

        this.x_awal = x_awal;
        this.x_akhir = x_akhir;
        this.y_awal = y_awal;
        this.y_akhir = y_akhir;

        Dx = Math.abs(x_akhir - x_awal);
        Dy = Math.abs(y_akhir - y_awal);
        parameter = (2 * Dy) - Dx;

        this.repaint();

        gp.moveTo(x_awal, y_awal);
        double xt, yt;

        if (x_akhir - x_awal > 0) {
            xt = 1;

        } else {
            xt = -1;
        }

        if (y_akhir - y_awal > 0) {
            yt = 1;

        } else {
            yt = -1;
        }

        if (Dx > Dy) {
            if (x_akhir - x_awal > 0) {
                while (x_awal < x_akhir) {

                    if (parameter < 0) {

                        parameter += (2 * Dy);

                    } else {

                        y_awal += yt;
                        parameter = parameter + (2 * Dy) - (2 * Dx);

                    }

                    gp.lineTo(x_awal, y_awal);
                    x_awal += xt;
                }
            } else {

                while (x_awal > x_akhir) {

                    if (parameter < 0) {

                        parameter += (2 * Dy);

                    } else {

                        y_awal += yt;
                        parameter = parameter + (2 * Dy) - (2 * Dx);

                    }

                    gp.lineTo(x_awal, y_awal);
                    x_awal += xt;
                }

            }
        } else {
            if (y_akhir - y_awal > 0) {

                while (y_awal < y_akhir) {


                    if (parameter < 0) {

                        parameter += (2 * Dx);

                    } else {

                        x_awal += xt;
                        parameter = parameter + (2 * Dx) - (2 * Dy);

                    }

                    gp.lineTo(x_awal, y_awal);
                    y_awal += yt;
                }
            } else {

                while (y_awal > y_akhir) {


                    if (parameter < 0) {

                        parameter += (2 * Dx);

                    } else {

                        x_awal += xt;
                        parameter = parameter + (2 * Dx) - (2 * Dy);

                    }

                    gp.lineTo(x_awal, y_awal);
                    y_awal += yt;
                }

            }
        }

    }
    
     public void gambar_kotak_Bressenham(int x_awal, int y_awal, int x_akhir, int y_akhir) {
        this.x_awal = x_awal;
        this.x_akhir = x_akhir;
        this.y_awal = y_awal;
        Dx = Math.abs(x_akhir - x_awal);
        Dy = Math.abs(y_akhir - y_awal);

        parameter = (2 * Dy) - Dx;
        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);

    }

    public void gambar_bulat_midpoint(int x_pusat, int y_pusat, int r) {
        x2 = 0;
        y2 = r;

        this.x_pusat = x_pusat;
        this.y_pusat = y_pusat;
        gp.moveTo(x_pusat + x2, y_pusat + y2);
        gp2.moveTo(x_pusat - x2, y_pusat + y2);
        gp3.moveTo(x_pusat + x2, y_pusat - y2);
        gp4.moveTo(x_pusat - x2, y_pusat - y2);
        gp5.moveTo(x_pusat + y2, y_pusat + x2);
        gp6.moveTo(x_pusat - y2, y_pusat + x2);
        gp7.moveTo(x_pusat + y2, y_pusat - x2);
        gp8.moveTo(x_pusat - y2, y_pusat - x2);


        p = 1 - r;
        while (x2 < y2) {
            gp.lineTo(x_pusat + x2, y_pusat + y2);
            gp2.lineTo(x_pusat - x2, y_pusat + y2);
            gp3.lineTo(x_pusat + x2, y_pusat - y2);
            gp4.lineTo(x_pusat - x2, y_pusat - y2);
            gp5.lineTo(x_pusat + y2, y_pusat + x2);
            gp6.lineTo(x_pusat - y2, y_pusat + x2);
            gp7.lineTo(x_pusat + y2, y_pusat - x2);
            gp8.lineTo(x_pusat - y2, y_pusat - x2);
            x2++;

            if (p < 0) {

                p += (2 * x2) + 6;

            } else {

                y2--;

                p += 2 * (x2 - y2) + 1;

            }


            this.repaint();
        }

    }
   
     public void gambar_elips_midpoint(int x_pusat, int y_pusat, double Rx, double Ry) {

        double Rx2 = Rx * Rx;
        double twoRx2 = 2 * Rx2;

        x2 = 0;
        double px = 0;
        double Ry2 = Ry * Ry;
        double twoRy2 = 2 * Ry2;
        y2 = Ry;

        double py = twoRx2 * y2;
        this.x_pusat = x_pusat;
        this.y_pusat = y_pusat;

        this.p = (Ry2 - (Rx2 * Ry) + (0.25 * Rx2));

        gp.moveTo(x_pusat + x2, y_pusat + y2);
        gp2.moveTo(x_pusat - x2, y_pusat + y2);
        gp3.moveTo(x_pusat + x2, y_pusat - y2);
        gp4.moveTo(x_pusat - x2, y_pusat - y2);

        while (px < py) {
            x2++;
            px += twoRy2;
            if (p < 0) {
                p += Ry2 + px;

            } else {
                y2--;
                py -= twoRx2;
                p += Ry2 + px - py;

            }

            gp.lineTo(x_pusat + x2, y_pusat + y2);
            gp2.lineTo(x_pusat - x2, y_pusat + y2);
            gp3.lineTo(x_pusat + x2, y_pusat - y2);
            gp4.lineTo(x_pusat - x2, y_pusat - y2);
        }

        this.p = Ry2 * (x2 + 0.5) * (x2 + 0.5) + Rx2 * (y2 - 1) * (y2 - 1) - Rx2 * Ry2;

        while (y2 > 0) {

            y2--;

            py -= twoRx2;

            if (p > 0) {

                p += Rx2 - py;

            } else {

                x2++;
                px += twoRy2;
                p += Ry2 + px - py;

            }

            gp.lineTo(x_pusat + x2, y_pusat + y2);
            gp2.lineTo(x_pusat - x2, y_pusat + y2);
            gp3.lineTo(x_pusat + x2, y_pusat - y2);
            gp4.lineTo(x_pusat - x2, y_pusat - y2);

        }

   
this.repaint();

     }
   
   
    public void paintComponent(Graphics gambar1) {
        super.paintComponents(gambar1);
        Graphics2D g2 = (Graphics2D) gambar1;

        GradientPaint backs = new GradientPaint(300, 90, new Color(51, 255, 255), 300, 350, new Color(0, 51, 255));
        g2.setPaint(backs);
        g2.fillRect(0, 0, 900, 900);
   
   
    // mewarnai badan rumah
        g2.setColor(Color.gray);
        g2.fillRect(200, 200, 450, 300);
       
       
    // genteng
        g2.setColor(new Color(204, 51, 0));
        gp9.moveTo(200, 200);
        gp9.lineTo(425, 35);
        gp9.lineTo(650, 200);
       
        gp9.closePath();
        g2.draw(gp9);
        g2.fill(gp9);
   
   
      // mewarnai  jendela 1
        g2.setColor(new Color(255, 255, 255));
        g2.fillRect(230, 220, 108, 55);
   
   
    // mewarnai  jendela 2
        g2.setColor(new Color(255, 255, 255));
        g2.fillRect(520, 220, 108, 55);
   
   
    // mewarnai pintu
        g2.setColor(Color.yellow);
        g2.fillRect(380, 340, 100, 160);
        
       
        // mewarnai bundar atas pintu
        g2.setColor(Color.orange);
        g2.fillOval(380, 300, 100, 100);
       
        
    // mewarnai  pintu
        g2.setColor(Color.yellow);
        g2.fillRect(380, 340, 100, 65);
       
       // mewarnai engsel pintu
        g2.setColor(new Color(0, 0, 0));
        g2.fillOval(380, 380, 15, 30);
       
     g2.setColor(Color.black);
        BasicStroke tebal = new BasicStroke(3.0f);
        g2.setStroke(tebal);
        g2.draw(gp);
        g2.draw(gp2);
        g2.draw(gp3);
        g2.draw(gp4);
        g2.draw(gp5);
        g2.draw(gp6);
        g2.draw(gp7);
        g2.draw(gp8);
       
       
      

      
    }
   
   
    public static void main(String[] args) {
        JFrame kom = new JFrame();
        kom.setTitle("umah gue");
        kom.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        lukis asa = new lukis();

        kom.getContentPane().add(asa);
        kom.setSize(800, 600);
        kom.setVisible(true);
        kom.setLocationRelativeTo(null);


   
   
   //membuat badan rumah
       
         asa.gambar_kotak_Bressenham(200, 200, 650, -100);
       
     // jendela 1
         asa.gambar_kotak_Bressenham(230, 220, 285, 7);
   
    // jendela 2
       
         asa.gambar_kotak_Bressenham(520, 220, 600, 165);
        
   // engsel pintu
    asa.gambar_elips_midpoint(400, 400, 10, 20);
   }
    }


OUTPUT  nya