4 * License : The MIT License
5 * Copyright(c) 2011 MikuToga Partners
8 package jp.sourceforge.mikutoga.vmd.model;
12 * <p>XYZ3軸それぞれに対応するベジェ曲線を3本持つ。
14 public class PosCurve {
16 private final BezierParam intpltXpos = new BezierParam();
17 private final BezierParam intpltYpos = new BezierParam();
18 private final BezierParam intpltZpos = new BezierParam();
32 * @return ボーンX軸移動の補間曲線情報
34 public BezierParam getIntpltXpos(){
35 return this.intpltXpos;
40 * @return ボーンY軸移動の補間曲線情報
42 public BezierParam getIntpltYpos(){
43 return this.intpltYpos;
48 * @return ボーンZ軸移動の補間曲線情報
50 public BezierParam getIntpltZpos(){
51 return this.intpltZpos;
55 * インデックス指定された各軸の補間曲線情報を返す。
56 * <p>インデックス値0がX軸、1がY軸、2がZ軸に対応する。
57 * @param no インデックス値[0-2]
59 * @throws IllegalArgumentException インデックス値が範囲外
61 public BezierParam item(int no) throws IllegalArgumentException {
64 case 0: result = this.intpltXpos; break;
65 case 1: result = this.intpltYpos; break;
66 case 2: result = this.intpltZpos; break;
68 throw new IllegalArgumentException();
74 * 3軸ともMMDデフォルトの直線補間か判定する。
75 * @return 3軸ともMMDデフォルトの直線補間ならtrue
77 public boolean isDefaultLinear(){
78 if( ! this.intpltXpos.isDefaultLinear() ) return false;
79 if( ! this.intpltYpos.isDefaultLinear() ) return false;
80 if( ! this.intpltZpos.isDefaultLinear() ) return false;
87 * @return {@inheritDoc}
90 public String toString(){
91 StringBuilder result = new StringBuilder();
93 result.append("X-Bezier ").append(this.intpltXpos).append('\n');
94 result.append("Y-Bezier ").append(this.intpltYpos).append('\n');
95 result.append("Z-Bezier ").append(this.intpltZpos);
97 return result.toString();