1   package sample;
2   
3   import java.awt.Color;
4   import fi.jyu.mit.graphics.*;
5   
6   /**
7    * Piirretään ukkoja jotka liikkuvat ja pyörivät.
8    * @author vesal
9    */
10  public class UkkoSample {
11  
12      /**
13       * Ukko-luokka josta saadaa viite toiseen käteen
14       * @author vesal
15       */
16      public static class Ukko extends DrawableCollection {
17          private final Drawable kasi;
18          private final Drawable jalka;
19          
20          /**
21           * Alustetaan ukko haluttuun paikkaa
22           * @param dx ukon pään keskipiste
23           * @param dy ukon pään keskipiste
24           */
25          public Ukko(double dx,double dy) {
26            super();  
27            move(dx,dy,0.0);
28            add(new Circle(0,0,20));
29            add(new Line(0,0,0,100)).move(0,20,0);
30            kasi = add(new Line(0,0,0,90)).move(0,30,0).rotate(Axis.Z,30);
31            add(new Line(0,0,0, 90)).move(0, 30,0).rotate(Axis.Z,-130);
32            add(new Line(0,0,0,100)).move(0,120,0).rotate(Axis.Z,  25);
33            jalka = add(new Line(0,0,0,100)).move(0,120,0).rotate(Axis.Z, -25);
34          }
35          
36          /**
37           * Alustetaan ukko haluttuun paikkaan ja kokoon
38           * @param dx ukon pään keskipiste
39           * @param dy ukon pään keskipiste
40           * @param s  ukon skaalauskerroin
41           * @param deg ukon kiertokulma Z-akselin suhteen
42           * @param color ukon väri
43           */
44          public Ukko(double dx,double dy, double s, double deg, Color color) {
45              this(dx,dy);
46              if ( s != 1 ) scale(s,s,s);
47              if ( deg != 0 ) rotate(Axis.Z,deg);
48              if ( color != null ) setColor(color);
49          }
50          
51          
52          /**
53           * @return palautetaan viite ukon toisen käteen
54           */
55          public Drawable getKasi() { return kasi; }
56  
57          /**
58           * @return palautetaan viite ukon toisen käteen
59           */
60          public Drawable getJalka() { return jalka; }
61          
62      }
63      
64      /**
65       * @param args
66       */ 
67      @SuppressWarnings("unused")
68      public static void main(String[] args) {
69          Window window = new Window();
70          window.add(new Ukko(60,60));
71          Ukko pukko = new Ukko(160,60,0.5,0,Color.RED); window.add(pukko);
72          Drawable oukko = window.add(new Ukko(260,60,0.3,0,Color.ORANGE));
73          window.showWindow();
74          Ukko ukko = new Ukko(260,180,0.3,0,null); window.add(ukko);
75  
76          new Rotator(ukko,Axis.Z,3,200);
77          new Rotator(ukko.getKasi(),Axis.Z,5,230);
78          new Mover(oukko,2,3,0,300);
79          new Rotator(oukko,Axis.Y,10,230);
80          
81          // window.scale(0.5,2, 1);
82          
83          // Esimerkki ukon siirtamisesta hiiren kohdalle. 
84          new MouseFollower(window.getPanel(),pukko,0,0,0,true);
85          
86          // window.getPanel().setBackground(Color.CYAN);
87          window.setTitle("Ukot heiluu");
88          
89      }
90  
91  }
92