OSDN Git Service

af171c5aa58b16e09a22913748edae18b60761c4
[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      * <p>ボーンのプライマリ名が「左ひざ」もしくは「右ひざ」で始まれば
43      * ひざボーンとする。
44      * <p>ひざボーン名の例
45      * <ul>
46      * <li>「左ひざ」
47      * <li>「左ひざげり」
48      * </ul>
49      * <p>ひざボーン名ではない例
50      * <ul>
51      * <li>「左ひ」
52      * <li>「ひざ」
53      * <li>「前ひざ」
54      * <li>「左ひさ゛」
55      * <li>「左ヒザ」
56      * <li>「左ヒザ」
57      * <li>「左膝」
58      * <li>「Knee_L」
59      * </ul>
60      * @param boneNameJp プライマリボーン名
61      * @return ひざボーンならtrue
62      */
63     public static boolean isPrimaryKneeName(String boneNameJp){
64         if(boneNameJp.startsWith(KNEE_L_PFX)) return true;
65         if(boneNameJp.startsWith(KNEE_R_PFX)) return true;
66
67         return false;
68     }
69
70 }