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