2 * position interpolation curve
4 * License : The MIT License
5 * Copyright(c) 2011 MikuToga Partners
8 package jp.sfjp.mikutoga.vmd.model;
10 import java.text.MessageFormat;
11 import java.util.ArrayList;
12 import java.util.Iterator;
13 import java.util.List;
16 * 3次元位置移動のモーション補間曲線情報。
17 * <p>XYZ3軸それぞれに対応するベジェ曲線を3本持つ。
19 public class PosCurve implements Iterable<BezierParam> {
21 private static final int IT_SZ = 3;
22 private static final String MSG_TXT =
23 "X-Bezier {0}\n" + "Y-Bezier {1}\n" + "Z-Bezier {2}";
26 private final BezierParam intpltXpos = new BezierParam();
27 private final BezierParam intpltYpos = new BezierParam();
28 private final BezierParam intpltZpos = new BezierParam();
42 * X軸、Y軸、Z軸の順で補間曲線情報を列挙する。
43 * @return {@inheritDoc} 3要素を返す列挙子
46 public Iterator<BezierParam> iterator(){
47 List<BezierParam> list;
48 list = new ArrayList<BezierParam>(IT_SZ);
49 list.add(this.intpltXpos);
50 list.add(this.intpltYpos);
51 list.add(this.intpltZpos);
52 return list.iterator();
57 * @return ボーンX軸移動の補間曲線情報
59 public BezierParam getIntpltXpos(){
60 return this.intpltXpos;
65 * @return ボーンY軸移動の補間曲線情報
67 public BezierParam getIntpltYpos(){
68 return this.intpltYpos;
73 * @return ボーンZ軸移動の補間曲線情報
75 public BezierParam getIntpltZpos(){
76 return this.intpltZpos;
80 * 3軸ともMMDデフォルトの直線補間か判定する。
81 * @return 3軸ともMMDデフォルトの直線補間ならtrue
83 public boolean isDefaultLinear(){
84 if( ! this.intpltXpos.isDefaultLinear() ) return false;
85 if( ! this.intpltYpos.isDefaultLinear() ) return false;
86 if( ! this.intpltZpos.isDefaultLinear() ) return false;
93 * @return {@inheritDoc}
96 public String toString(){
98 msg = MessageFormat.format(MSG_TXT,
99 this.intpltXpos, this.intpltYpos, this.intpltZpos );