4 * License : The MIT License
5 * Copyright(c) 2011 MikuToga Partners
8 package jp.sfjp.mikutoga.vmd.model;
10 import java.text.MessageFormat;
13 * 左手系空間でターゲットの周りを回るカメラの回転情報。
14 * いずれもカメラ姿勢ではなくカメラ運動量を示すため、
17 * <p>latitudeはターゲットから見たカメラの仰俯角(≒緯度)。
19 * Y軸回転量が0の時のZ正軸がY正軸へ倒れる方向が正回転。
20 * (MMDのUIとは符号が逆になるので注意)
22 * カメラはターゲットに対しXZ平面(水平)と平行な箇所に位置する。
24 * <p>longitudeはY軸周りの回転量(≒経度)。
26 * X正軸がZ正軸へ倒れる方向が正回転。(ボーン回転と逆)
28 * カメラレンズはZ軸-∞方向からZ軸+∞方向を向く。
30 * <p>rollはレンズをターゲットを向けたカメラのロール回転量。
32 * 仰俯角とY軸回転量が0の時にY正軸がX正軸に倒れる方向が正回転。
33 * 仰俯角およびロール回転量が0の場合、カメラ上部はY軸+∞の方を向く。
35 public class CameraRotation {
37 private static final String MSG_TXT =
38 "latitude={0} longitude={1} roll={2}";
41 private double latitude;
42 private double longitude;
49 public CameraRotation(){
56 * ターゲットから見たカメラの仰俯角(≒緯度)を返す。
58 * @return ターゲットから見たカメラの仰俯角(≒緯度)
60 public double getLatitude(){
65 * ターゲットから見たカメラの仰俯角(≒緯度)を設定する。
67 * @param latitude ターゲットから見たカメラの仰俯角(≒緯度)
69 public void setLatitude(double latitude){
70 this.latitude = latitude;
77 * @return Y軸周りの回転量(≒経度)
79 public double getLongitude(){
80 return this.longitude;
86 * @param longitude Y軸周りの回転量(≒経度)
88 public void setLongitude(double longitude){
89 this.longitude = longitude;
94 * レンズをターゲットを向けたカメラのロール回転量を返す。
96 * @return レンズをターゲットを向けたカメラのロール回転量
98 public double getRoll(){
103 * レンズをターゲットを向けたカメラのロール回転量を設定する。
105 * @param roll レンズをターゲットを向けたカメラのロール回転量
107 public void setRoll(double roll){
115 * @return {@inheritDoc}
118 public String toString(){
120 msg = MessageFormat.format(MSG_TXT,
121 this.latitude, this.longitude, this.roll );