Programming Blog

This blog is about technical and programming questions and there solutions. I also cover programs that were asked in various interviews, it will help you to crack the coding round of various interviews

Sunday 19 August 2018

Draw Circles using using Polar form equations on mouse Click

package draw;



import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.MouseEvent;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JFrame;

import javax.swing.event.MouseInputListener;



public class WindowDraw extends JFrame implements MouseInputListener {



    private Point p1 = new Point();

    private Point p2 = new Point();

    private List list = new ArrayList();

    private Circle circleObj;

    private int clicks = 0;



    public WindowDraw() {



        setTitle("Drawing ");

        addMouseListener(this);

        setLocation(100, 100);

        setSize(500, 500);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setVisible(true);

    }



    @Override

    public void paint(Graphics g) {

        super.paint(g);

        g.setColor(Color.white);

        g.fillRect(0, 0, 600, 600);

        g.setColor(Color.red);

        Circle currentCircle;

        for (int i = 0; i < list.size(); i++) {

            currentCircle = (Circle) (list.get(i));

            currentCircle.CirclePolar(g);

        }

    }



    public static void main(String[] args) {

        new WindowDraw();

    }



    @Override

    public void mouseClicked(MouseEvent e) {

    }



    @Override

    public void mousePressed(MouseEvent e) {

        int x = e.getX();

        int y = e.getY();



        if (clicks == 0) {

            circleObj = new Circle();

            circleObj.setCenter(new Point(x, y));



            clicks++;

        } else {

            circleObj.setP2(new Point(x, y));

            circleObj.calRadius();

            list.add(circleObj);

            clicks = 0;

        }

        repaint();

    }



    @Override

    public void mouseReleased(MouseEvent e) {

    }



    @Override

    public void mouseEntered(MouseEvent e) {

    }



    @Override

    public void mouseExited(MouseEvent e) {

    }



    @Override

    public void mouseDragged(MouseEvent e) {

    }



    @Override

    public void mouseMoved(MouseEvent e) {

    }

}



class Point {



    private int x;

    private int y;



    public Point() {

    }



    public Point(int x, int y) {

        this.x = x;

        this.y = y;

    }



    public int getX() {

        return x;

    }



    public int getY() {

        return y;

    }



    public void setX(int x) {

        this.x = x;

    }



    public void setY(int y) {

        this.y = y;

    }

}



class Circle {



    private Point center;

    private Point p2;

    private float radius;



    public Circle() {

    }



    public Circle(Point center, Point p2) {

        this.center = center;

        this.p2 = p2;

        radius = (float) Math.sqrt((double) ((center.getX()

                - p2.getX()) * (center.getX() - p2.getX())) + ((center.getY()

                - p2.getY()) * (center.getY() - p2.getY())));

    }



    public Point getCenter() {

        return center;

    }



    public Point getP2() {

        return p2;

    }



    public void setCenter(Point p1) {

        this.center = p1;

    }



    public void setP2(Point p2) {

        this.p2 = p2;

    }



    public void calRadius() {

        radius = (float) Math.round(Math.sqrt((double) ((center.getX()

                - p2.getX()) * (center.getX() - p2.getX())) + ((center.getY()

                - p2.getY()) * (center.getY() - p2.getY()))));

    }



    public void setRadius(float radius) {

        this.radius = radius;

    }



    public float getRadius() {

        return radius;

    }

      

      void CirclePolar(Graphics g)

      {

             int xc = center.getX();

           int yc = center.getY();

           int R = (int) radius;

            

           int x=R,y=0;

           double theta=0,dtheta=1.0/R;

           Draw8Points(g,xc,yc,x,y);

           while(x>y)

           {

                     theta+=dtheta;

                     x=(int) Math.round(R*Math.cos(theta));

                     y=(int) Math.round(R*Math.sin(theta));

                     Draw8Points(g,xc,yc,x,y);

           }

      }





    void Draw8Points(Graphics g, int xc, int yc, int a, int b)

      {

          g.drawOval(xc+a, yc+b, 1,1);

          g.drawOval(xc-a, yc+b, 1,1);

          g.drawOval(xc-a, yc-b, 1,1);

          g.drawOval(xc+a, yc-b, 1,1);

           

          g.drawOval(xc+b, yc+a, 1,1);

          g.drawOval(xc-b, yc+a, 1,1);

          g.drawOval(xc-b, yc-a, 1,1);

          g.drawOval(xc+b, yc-a, 1,1);

            

      }

       

}

No comments:

Post a Comment