1   package fi.jyu.mit.graphics;
2   
3   import java.awt.Graphics;
4   
5   /**
6    * Murtoviiva
7    * @author Vesa Lappalainen
8    *
9    */
10  public class Polyline extends Polygon {
11      
12      /**
13       * Luo murtoviivan annetuista kulmapisteiden
14       * x- ja y-koordinaateista
15       * @param xpoints taulukko kulmapisteiden x-koordinaateista
16       * @param ypoints taulukko kulmapisteiden y-koordinaateista
17       */
18      public Polyline(double[] xpoints, double[] ypoints) {
19          super(xpoints, ypoints);
20      }
21      
22      /**
23       * Luo murtoviivan joka on diagrammi, annetusta lähtöpisteestä x, 
24       * annetulla pistevälillä dx ja annetuilla pisteiden korkeuksilla ypoints[],
25       * esimerkiksi:
26       * <pre>
27       *     double[] ypoints = {0, 1, 2, 1, 0};
28       *     Polyline p = new Polyline(0, 1, ypoints);
29       *     
30       *     Luo diagrammin pisteistä (0,0), (1,1), (2,2), (3,1), (4,0)
31       * </pre>
32       * @param x ensimmäisen pisteen x-koordinaatti
33       * @param dx pisteiden väli
34       * @param ypoints taulukko pisteiden y-koordinaateista
35       */
36      public Polyline(double x, double dx, double[] ypoints) {
37          super(x,dx,ypoints);
38      }
39  
40      /**
41       * Luo murtoviivan annetuista kulmapisteiden
42       * x-, y- ja z-koordinaateista
43       * @param xpoints taulukko kulmapisteiden x-koordinaateista
44       * @param ypoints taulukko kulmapisteiden y-koordinaateista
45       * @param zpoints taulikko kulmapisteiden z-koordinaateista
46       */
47      public Polyline(double[] xpoints, double[] ypoints, double[] zpoints) {
48          super(xpoints, ypoints, zpoints);
49      }
50      
51      /**
52       * Luo kaksi- tai kolmiulotteisen murtoviivan annetuista kulmapisteistä, esimerkiksi:
53       * <pre>
54       *      double[][] points = {{2, 6}, {5, 5}, {-1, 2.5}}
55       *      Polyline p = new Polyline(points);
56       *      
57       *      Luo täytetyn monikulmion jonka kärkipisteet ovat (2, 6), (5, 5) ja (-1, 2.5)
58       * </pre>
59       * @param points 
60       */
61      public Polyline(double[][] points) {
62          super(points);
63      }
64  
65      /**
66       * Luo murtoviivan annetuista kulmapisteistä jotka ovat RPoint olioita
67       * @param points taulukko kulmapisteistä jotka ovat RPoint-olioita
68       */
69      public Polyline(RPoint[] points) {
70          super(points);
71      }
72      
73      @Override
74      protected void drawShape(Graphics g, Matrix a) {
75          int[][] sPoints = makeScreenPoints(a);
76          g.drawPolyline(sPoints[0], sPoints[1], getCount());
77      }   
78  }
79