OSDN Git Service

modify javadoc paragraph.
[mikutoga/Vmd2XML.git] / src / main / java / jp / sfjp / mikutoga / vmd / model / PosCurve.java
1 /*
2  * position interpolation curve
3  *
4  * License : The MIT License
5  * Copyright(c) 2011 MikuToga Partners
6  */
7
8 package jp.sfjp.mikutoga.vmd.model;
9
10 import java.text.MessageFormat;
11 import java.util.ArrayList;
12 import java.util.Iterator;
13 import java.util.List;
14
15 /**
16  * 3次元位置移動のモーション補間曲線情報。
17  *
18  * <p>XYZ3軸それぞれに対応するベジェ曲線を3本持つ。
19  */
20 public class PosCurve implements Iterable<BezierParam> {
21
22     private static final int IT_SZ = 3;
23     private static final String MSG_TXT =
24             "X-Bezier {0}\n" + "Y-Bezier {1}\n" + "Z-Bezier {2}";
25
26
27     private final BezierParam intpltXpos = new BezierParam();
28     private final BezierParam intpltYpos = new BezierParam();
29     private final BezierParam intpltZpos = new BezierParam();
30
31
32     /**
33      * コンストラクタ。
34      */
35     public PosCurve(){
36         super();
37         return;
38     }
39
40
41     /**
42      * {@inheritDoc}
43      *
44      * <p>X軸、Y軸、Z軸の順で補間曲線情報を列挙する。
45      *
46      * @return {@inheritDoc} 3要素を返す列挙子
47      */
48     @Override
49     public Iterator<BezierParam> iterator(){
50         List<BezierParam> list;
51         list = new ArrayList<BezierParam>(IT_SZ);
52         list.add(this.intpltXpos);
53         list.add(this.intpltYpos);
54         list.add(this.intpltZpos);
55         return list.iterator();
56     }
57
58     /**
59      * ボーンX軸移動の補間曲線情報を返す。
60      *
61      * @return ボーンX軸移動の補間曲線情報
62      */
63     public BezierParam getIntpltXpos(){
64         return this.intpltXpos;
65     }
66
67     /**
68      * ボーンY軸移動の補間曲線情報を返す。
69      *
70      * @return ボーンY軸移動の補間曲線情報
71      */
72     public BezierParam getIntpltYpos(){
73         return this.intpltYpos;
74     }
75
76     /**
77      * ボーンZ軸移動の補間曲線情報を返す。
78      *
79      * @return ボーンZ軸移動の補間曲線情報
80      */
81     public BezierParam getIntpltZpos(){
82         return this.intpltZpos;
83     }
84
85     /**
86      * 3軸ともMMDデフォルトの直線補間か判定する。
87      *
88      * @return 3軸ともMMDデフォルトの直線補間ならtrue
89      */
90     public boolean isDefaultLinear(){
91         if( ! this.intpltXpos.isDefaultLinear() ) return false;
92         if( ! this.intpltYpos.isDefaultLinear() ) return false;
93         if( ! this.intpltZpos.isDefaultLinear() ) return false;
94
95         return true;
96     }
97
98     /**
99      * {@inheritDoc}
100      *
101      * @return {@inheritDoc}
102      */
103     @Override
104     public String toString(){
105         String msg;
106         msg = MessageFormat.format(MSG_TXT,
107                 this.intpltXpos, this.intpltYpos, this.intpltZpos );
108
109         return msg;
110     }
111
112 }