1   package fi.jyu.mit.graphics;
2   
3   /**
4    * Luokka jolla voi pyorittaa kuvia
5    * @author Vesa Lappalainen
6    * @author Markus Kivioja
7    */
8   public class Rotator extends BasicTransformer {
9       
10      /**
11       * Luo uuden pyörittäjän
12       * @param object olio jota pyöritetään
13       * @param axis akseli jonka suhteen pyöritetään (Axis.X/Axis.Y/Axis.Z)
14       * @param deg yhden pyörähdysaskeleen suuruus asteina
15       * @param dt pyörähdysaskeleiden välinen aika millisekunteina
16       */
17      public Rotator(Transformable object,int axis,double deg,long dt) {
18          this(object,new RotMatrix(axis,deg),dt);
19      }
20      
21      /**
22       * Luo uuden pyörittäjän
23       * @param object olio jota pyöritetään
24       * @param rotM kiertomatriisi jolla pyöritetään
25       * @param dt pyörähdysaskeleiden välinen aika millisekunteina
26       */
27      public Rotator(Transformable object, Matrix rotM, long dt) {
28          super(object,rotM,dt);
29      }
30      
31      /**
32       * Ajaa yhden pyöritysaskeleen
33       */
34      @Override
35      public void run() {
36          Matrix rot2 = getObject().getRotator();
37          if ( rot2 == null ) rot2 = getTransform(); else rot2 = rot2.multiply(getTransform());
38          getObject().setRotator(rot2);
39      }
40      
41  }
42