OSDN Git Service

2d10c80f9ffdc168de35be1ee1045cbb2fb0744b
[mikutoga/Vmd2XML.git] / src / main / java / jp / sfjp / mikutoga / vmd / model / CameraRotation.java
1 /*
2  * camera rotation
3  *
4  * License : The MIT License
5  * Copyright(c) 2011 MikuToga Partners
6  */
7
8 package jp.sfjp.mikutoga.vmd.model;
9
10 import java.text.MessageFormat;
11
12 /**
13  * 左手系空間でターゲットの周りを回るカメラの回転情報。
14  * いずれもカメラ姿勢ではなくカメラ運動量を示すため、
15  * 回転量0と2Πの区別には意味がある。
16  *
17  * <p>latitudeはターゲットから見たカメラの仰俯角(≒緯度)。
18  * 単位はラジアン。
19  * Y軸回転量が0の時のZ正軸がY正軸へ倒れる方向が正回転。
20  * (MMDのUIとは符号が逆になるので注意)
21  * 仰俯角が0の場合、
22  * カメラはターゲットに対しXZ平面(水平)と平行な箇所に位置する。
23  *
24  * <p>longitudeはY軸周りの回転量(≒経度)。
25  * 単位はラジアン。
26  * X正軸がZ正軸へ倒れる方向が正回転。(ボーン回転と逆)
27  * 仰俯角およびY軸回転量が0の場合、
28  * カメラレンズはZ軸-∞方向からZ軸+∞方向を向く。
29  *
30  * <p>rollはレンズをターゲットを向けたカメラのロール回転量。
31  * 単位はラジアン。
32  * 仰俯角とY軸回転量が0の時にY正軸がX正軸に倒れる方向が正回転。
33  * 仰俯角およびロール回転量が0の場合、カメラ上部はY軸+∞の方を向く。
34  */
35 public class CameraRotation {
36
37     private static final String MSG_TXT =
38             "latitude={0} longitude={1} roll={2}";
39
40
41     private double latitude;
42     private double longitude;
43     private double roll;
44
45
46     /**
47      * コンストラクタ。
48      */
49     public CameraRotation(){
50         super();
51         return;
52     }
53
54
55     /**
56      * ターゲットから見たカメラの仰俯角(≒緯度)を返す。
57      *
58      * @return ターゲットから見たカメラの仰俯角(≒緯度)
59      */
60     public double getLatitude(){
61         return this.latitude;
62     }
63
64     /**
65      * ターゲットから見たカメラの仰俯角(≒緯度)を設定する。
66      *
67      * @param latitude ターゲットから見たカメラの仰俯角(≒緯度)
68      */
69     public void setLatitude(double latitude){
70         this.latitude = latitude;
71         return;
72     }
73
74     /**
75      * Y軸周りの回転量(≒経度)を返す。
76      *
77      * @return Y軸周りの回転量(≒経度)
78      */
79     public double getLongitude(){
80         return this.longitude;
81     }
82
83     /**
84      * Y軸周りの回転量(≒経度)を設定する。
85      *
86      * @param longitude Y軸周りの回転量(≒経度)
87      */
88     public void setLongitude(double longitude){
89         this.longitude = longitude;
90         return;
91     }
92
93     /**
94      * レンズをターゲットを向けたカメラのロール回転量を返す。
95      *
96      * @return レンズをターゲットを向けたカメラのロール回転量
97      */
98     public double getRoll(){
99         return this.roll;
100     }
101
102     /**
103      * レンズをターゲットを向けたカメラのロール回転量を設定する。
104      *
105      * @param roll レンズをターゲットを向けたカメラのロール回転量
106      */
107     public void setRoll(double roll){
108         this.roll = roll;
109         return;
110     }
111
112     /**
113      * {@inheritDoc}
114      *
115      * @return {@inheritDoc}
116      */
117     @Override
118     public String toString(){
119         String msg;
120         msg = MessageFormat.format(MSG_TXT,
121                 this.latitude, this.longitude, this.roll );
122         return msg;
123     }
124
125 }