OSDN Git Service

c200306fc6725f121d16148bba10fde3bef57e98
[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  * <p>latitudeはターゲットから見たカメラの仰俯角(≒緯度)。
17  * 単位はラジアン。
18  * Y軸回転量が0の時のZ正軸がY正軸へ倒れる方向が正回転。
19  * (MMDのUIとは符号が逆になるので注意)
20  * 仰俯角が0の場合、
21  * カメラはターゲットに対しXZ平面(水平)と平行な箇所に位置する。
22  * <p>longitudeはY軸周りの回転量(≒経度)。
23  * 単位はラジアン。
24  * X正軸がZ正軸へ倒れる方向が正回転。(ボーン回転と逆)
25  * 仰俯角およびY軸回転量が0の場合、
26  * カメラレンズはZ軸-∞方向からZ軸+∞方向を向く。
27  * <p>rollはレンズをターゲットを向けたカメラのロール回転量。
28  * 単位はラジアン。
29  * 仰俯角とY軸回転量が0の時にY正軸がX正軸に倒れる方向が正回転。
30  * 仰俯角およびロール回転量が0の場合、カメラ上部はY軸+∞の方を向く。
31  */
32 public class CameraRotation {
33
34     private static final String MSG_TXT =
35             "latitude={0} longitude={1} roll={2}";
36
37
38     private double latitude;
39     private double longitude;
40     private double roll;
41
42
43     /**
44      * コンストラクタ。
45      */
46     public CameraRotation(){
47         super();
48         return;
49     }
50
51
52     /**
53      * ターゲットから見たカメラの仰俯角(≒緯度)を返す。
54      * @return ターゲットから見たカメラの仰俯角(≒緯度)
55      */
56     public double getLatitude(){
57         return this.latitude;
58     }
59
60     /**
61      * ターゲットから見たカメラの仰俯角(≒緯度)を設定する。
62      * @param latitude ターゲットから見たカメラの仰俯角(≒緯度)
63      */
64     public void setLatitude(double latitude){
65         this.latitude = latitude;
66         return;
67     }
68
69     /**
70      * Y軸周りの回転量(≒経度)を返す。
71      * @return Y軸周りの回転量(≒経度)
72      */
73     public double getLongitude(){
74         return this.longitude;
75     }
76
77     /**
78      * Y軸周りの回転量(≒経度)を設定する。
79      * @param longitude Y軸周りの回転量(≒経度)
80      */
81     public void setLongitude(double longitude){
82         this.longitude = longitude;
83         return;
84     }
85
86     /**
87      * レンズをターゲットを向けたカメラのロール回転量を返す。
88      * @return レンズをターゲットを向けたカメラのロール回転量
89      */
90     public double getRoll(){
91         return this.roll;
92     }
93
94     /**
95      * レンズをターゲットを向けたカメラのロール回転量を設定する。
96      * @param roll レンズをターゲットを向けたカメラのロール回転量
97      */
98     public void setRoll(double roll){
99         this.roll = roll;
100         return;
101     }
102
103     /**
104      * {@inheritDoc}
105      * @return {@inheritDoc}
106      */
107     @Override
108     public String toString(){
109         String msg;
110         msg = MessageFormat.format(MSG_TXT,
111                 this.latitude, this.longitude, this.roll );
112         return msg;
113     }
114
115 }