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次元位置移動のモーション補間曲線情報。
18 * <p>XYZ3軸それぞれに対応するベジェ曲線を3本持つ。
20 public class PosCurve implements Iterable<BezierParam> {
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}";
27 private final BezierParam intpltXpos = new BezierParam();
28 private final BezierParam intpltYpos = new BezierParam();
29 private final BezierParam intpltZpos = new BezierParam();
44 * <p>X軸、Y軸、Z軸の順で補間曲線情報を列挙する。
46 * @return {@inheritDoc} 3要素を返す列挙子
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();
61 * @return ボーンX軸移動の補間曲線情報
63 public BezierParam getIntpltXpos(){
64 return this.intpltXpos;
70 * @return ボーンY軸移動の補間曲線情報
72 public BezierParam getIntpltYpos(){
73 return this.intpltYpos;
79 * @return ボーンZ軸移動の補間曲線情報
81 public BezierParam getIntpltZpos(){
82 return this.intpltZpos;
86 * 3軸ともMMDデフォルトの直線補間か判定する。
88 * @return 3軸ともMMDデフォルトの直線補間ならtrue
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;
101 * @return {@inheritDoc}
104 public String toString(){
106 msg = MessageFormat.format(MSG_TXT,
107 this.intpltXpos, this.intpltYpos, this.intpltZpos );