Advertisement
Guest User

Untitled

a guest
Dec 12th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.65 KB | None | 0 0
  1. package nenr.dz5.crtanje;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import java.awt.Point;
  6. import java.awt.event.MouseAdapter;
  7. import java.awt.event.MouseEvent;
  8. import java.awt.event.MouseMotionAdapter;
  9. import java.io.BufferedWriter;
  10. import java.io.FileWriter;
  11. import java.io.IOException;
  12. import java.util.ArrayList;
  13.  
  14. import javax.swing.JFrame;
  15. import javax.swing.JPanel;
  16.  
  17. public class Crtanje {
  18.  
  19.     public static void main(String args[]) throws Exception {
  20.         JFrame f = new JFrame("Draw a Red Line");
  21.         f.setSize(300, 300);
  22.         f.setLocation(300, 300);
  23.         f.setResizable(false);
  24.         JPanel p = new JPanel() {
  25.             Point point = null;
  26.             ArrayList<Point> points = new ArrayList<>();
  27.             boolean gotovo = false;
  28.             {
  29.                 addMouseListener(new MouseAdapter() {
  30.  
  31.                     public void mouseReleased(MouseEvent e) {
  32.                         gotovo = true;
  33.                         repaint();
  34.                     }
  35.                 });
  36.                 addMouseMotionListener(new MouseMotionAdapter() {
  37.                     public void mouseDragged(MouseEvent e) {
  38.                         point = e.getPoint();
  39.                         points.add(point);
  40.                         repaint();
  41.                     }
  42.                 });
  43.             }
  44.  
  45.             public void paint(Graphics g) {
  46.                 if (gotovo) {
  47.                     super.paint(g);
  48.                     gotovo = false;
  49.                     try {
  50.                         obradi(points);
  51.                     } catch (IOException e) {
  52.                         e.printStackTrace();
  53.                     }
  54.                     points.clear();
  55.                 } else if (point != null) {
  56.                     g.setColor(Color.RED);
  57.                     g.drawLine(point.x, point.y, point.x, point.y);
  58.                 }
  59.             }
  60.  
  61.             void obradi(ArrayList<Point> points) throws IOException {
  62.                 ArrayList<Double> x = new ArrayList<>();
  63.                 ArrayList<Double> y = new ArrayList<>();
  64.                 int sx = 0, sy = 0;
  65.                 for (int i = 0; i < points.size(); ++i) {
  66.                     x.add((double) points.get(i).x);
  67.                     y.add((double) points.get(i).y);
  68.                     sx += points.get(i).x;
  69.                     sy += points.get(i).y;
  70.                 }
  71.                 double midx = (double) sx / points.size();
  72.                 double midy = (double) sy / points.size();
  73.  
  74.                 double m = -1;
  75.  
  76.                 for (int i = 0; i < points.size(); ++i) {
  77.                     x.set(i, x.get(i) - midx);
  78.                     y.set(i, y.get(i) - midy);
  79.                     if (Math.abs(x.get(i)) > m) {
  80.                         m = Math.abs(x.get(i));
  81.                     }
  82.                     if (Math.abs(y.get(i)) > m) {
  83.                         m = Math.abs(y.get(i));
  84.                     }
  85.                 }
  86.                 for (int i = 0; i < points.size(); ++i) {
  87.                     x.set(i, x.get(i) / m);
  88.                     y.set(i, y.get(i) / m);
  89.                 }
  90.                 int razmak = (points.size() - 1) / 19;
  91.                 int pos = 0;
  92.                 String s = "";
  93.                
  94.                 BufferedWriter bw = new BufferedWriter(new FileWriter("slova", true));
  95.                
  96.                 for (int i = 0; i < 20; ++i) {
  97.                     s += x.get(pos) + " " + y.get(pos) + " ";
  98.                     pos += razmak;
  99.                 }
  100.                 s += "0 1 0 0 0\n";
  101.                 bw.write(s);
  102.                 bw.close();
  103.             }
  104.         };
  105.         f.add(p);
  106.         f.setVisible(true);
  107.     }
  108.  
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement