OSDN Git Service

modify javadoc format.
[mikutoga/TogaGem.git] / src / main / java / jp / sfjp / mikutoga / typical / UniqBone.java
1 /*
2  * unique bone information
3  *
4  * License : The MIT License
5  * Copyright(c) 2013 MikuToga Partners
6  */
7
8 package jp.sfjp.mikutoga.typical;
9
10 /**
11  * 特別扱いされるボーンに関する諸々。
12  */
13 public final class UniqBone {
14
15     private static final String HIDARI_LEFT = "\u5de6";        // 「左」
16     private static final String MIGI_RIGHT  = "\u53f3";        // 「右」
17     private static final String HIZA_KNEE   = "\u3072\u3056"; // 「ひざ」
18
19
20     private static final String KNEE_L_PFX =
21             HIDARI_LEFT + HIZA_KNEE;          // 左ひざ
22     private static final String KNEE_R_PFX =
23             MIGI_RIGHT + HIZA_KNEE;           // 右ひざ
24
25     static{
26         assert "左ひざ".equals(KNEE_L_PFX);
27         assert "右ひざ".equals(KNEE_R_PFX);
28     }
29
30
31     /**
32      * 隠しコンストラクタ。
33      */
34     private UniqBone(){
35         assert false;
36         throw new AssertionError();
37     }
38
39     /**
40      * IK演算時の回転方向に制限を受ける「ひざボーン」か否か、
41      * ボーン名で判定する。
42      *
43      * <p>ボーンのプライマリ名が「左ひざ」もしくは「右ひざ」で始まれば
44      * ひざボーンとする。
45      *
46      * <p>ひざボーン名の例
47      * <ul>
48      * <li>「左ひざ」
49      * <li>「左ひざげり」
50      * </ul>
51      *
52      * <p>ひざボーン名ではない例
53      * <ul>
54      * <li>「左ひ」
55      * <li>「ひざ」
56      * <li>「前ひざ」
57      * <li>「左ひさ゛」
58      * <li>「左ヒザ」
59      * <li>「左ヒザ」
60      * <li>「左膝」
61      * <li>「Knee_L」
62      * </ul>
63      *
64      * @param boneNameJp プライマリボーン名
65      * @return ひざボーンならtrue
66      */
67     public static boolean isPrimaryKneeName(String boneNameJp){
68         if(boneNameJp.startsWith(KNEE_L_PFX)) return true;
69         if(boneNameJp.startsWith(KNEE_R_PFX)) return true;
70
71         return false;
72     }
73
74 }