1   package fi.jyu.mit.graphics;
2   
3   /**
4    * Neliskulmio jonka kärkipisteet kaksiulotteisia kokonaislukupisteitä
5    * @author Markus Kivioja
6    *
7    */
8   public class SRect {
9   
10      private final SPoint p1, p2;
11      
12      /**
13       * Luo uuden neliskulmion jonka kulmapisteet ovat SPoint-olioita
14       * @param leftTop vasen yläkulma
15       * @param rightBottom oikea alakulma
16       */
17      public SRect(SPoint leftTop, SPoint rightBottom) {
18          this.p1 = leftTop;
19          this.p2 = rightBottom;
20      }
21      
22      /**
23       * Luo uuden neliskulmion käyttäen annettuja kulmien koordinaatteja
24       * @param left vasemman reunan x-koordinaatti
25       * @param top yläreunan y-koordinaatti
26       * @param right oikean reunan x-koordinaatti
27       * @param bottom alareunan y-koordinaatti
28       */
29      public SRect(int left, int top, int right, int bottom) {
30          this.p1 = new SPoint(left, top);
31          this.p2 = new SPoint(right, bottom);
32      }
33      
34      /**
35       * Antaa tämän nelikulmion vasemman yläkulman SPoint-oliona
36       * @return nelikulmion vasen yläkulma
37       */
38      public SPoint getP1() {
39          return p1;
40      }
41      
42      /**
43       * Antaa tämän nelikulmion oikean alakulman SPoint-oliona
44       * @return nelikulmion oikea alakulma
45       */
46      public SPoint getP2() {
47          return p2;
48      }
49      
50      /**
51       * Antaa tämän nelikulmion leveyden
52       * @return nelikulmion leveys
53       */
54      public int width() {
55          return p2.getX() - p1.getX();
56      }
57      
58      /**
59       * Antaa tämän nelikulmion korkeuden
60       * @return nelikulmion korkeus
61       */
62      public int height() {
63          return p2.getY() - p1.getY();
64      }
65      
66      /**
67       * Antaa tämän nelikulmion keskipisteen x-koordinaatin
68       * @return nelikulmion keskipisteen x-koordinaatti
69       */
70      public double midX() {
71          return (p1.getX() + p2.getX()) / 2.0;
72      }
73      
74      /**
75       * Antaa tämän nelikulmion keskipisteen y-koordinaatin
76       * @return nelikulmion keskipisteen y-koordinaatti
77       */
78      public double midY() {
79          return (p1.getY() + p2.getY()) / 2.0;
80      }
81  }
82