1   package fi.jyu.mit.graphics;
2   
3   import java.awt.*;
4   
5   /**
6    * Luokka viivoille
7    * @author Markus Kivioja
8    *
9    */
10  public class Line extends BasicShape {
11      
12      private RPoint p1, p2;
13      
14      public Line() {
15          super();
16          this.p1 = new RPoint();
17          this.p2 = new RPoint();
18      }
19      
20      /**
21       * Luo uuden viivan
22       * @param x1 alkupisteen x-koordinaatti
23       * @param y1 alkupisteen y-koordinaatti
24       * @param x2 loppupisteen x-koordinaatti
25       * @param y2 loppupisteen y-koordinaatti
26       */
27      public Line(double x1, double y1, double x2, double y2) {
28          super();
29          this.p1 = new RPoint(x1, y1);
30          this.p2 = new RPoint(x2, y2);
31      }
32      
33      /**
34       * Luo uuden viivan
35       * @param x1 alkupisteen x-koordinaatti
36       * @param y1 alkupisteen y-koordinaatti
37       * @param z1 alkupisteen z-koordinaatti
38       * @param x2 loppupisteen x-koordinaatti
39       * @param y2 loppupisteen y-koordinaatti
40       * @param z2 loppupisteen z-koordinaatti
41       */
42      public Line(double x1, double y1, double z1, double x2, double y2, double z2) {
43          super();
44          this.p1 = new RPoint(x1, y1, z1);
45          this.p2 = new RPoint(x2, y2, z2);
46      }
47      
48      /**
49       * Luo uuden viivan
50       * @param p1 alkupiste RPoint-oliona
51       * @param p2 loppupiste RPoint-oliona
52       */
53      public Line(RPoint p1, RPoint p2) {
54          super();
55          this.p1 = p1;
56          this.p2 = p2;
57      }
58      
59      public void setPoints(double x1, double y1, double z1, double x2, double y2, double z2) {
60          this.p1.set(x1, y1, z1);
61          this.p2.set(x2, y2, z2);
62          this.redraw();
63      }
64      
65      @Override
66      protected void drawShape(Graphics g, Matrix a) {
67          SPoint point1 = a.transform(p1);
68          SPoint point2 = a.transform(p2);
69          g.drawLine(point1.getX(), point1.getY(), point2.getX(), point2.getY());
70      }
71  }
72