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 * いずれもカメラ姿勢ではなくカメラ運動量を示すため、
16 * <p>latitudeはターゲットから見たカメラの仰俯角(≒緯度)。
18 * Y軸回転量が0の時のZ正軸がY正軸へ倒れる方向が正回転。
19 * (MMDのUIとは符号が逆になるので注意)
21 * カメラはターゲットに対しXZ平面(水平)と平行な箇所に位置する。
22 * <p>longitudeはY軸周りの回転量(≒経度)。
24 * X正軸がZ正軸へ倒れる方向が正回転。(ボーン回転と逆)
26 * カメラレンズはZ軸-∞方向からZ軸+∞方向を向く。
27 * <p>rollはレンズをターゲットを向けたカメラのロール回転量。
29 * 仰俯角とY軸回転量が0の時にY正軸がX正軸に倒れる方向が正回転。
30 * 仰俯角およびロール回転量が0の場合、カメラ上部はY軸+∞の方を向く。
32 public class CameraRotation {
34 private static final String MSG_TXT =
35 "latitude={0} longitude={1} roll={2}";
38 private double latitude;
39 private double longitude;
46 public CameraRotation(){
53 * ターゲットから見たカメラの仰俯角(≒緯度)を返す。
54 * @return ターゲットから見たカメラの仰俯角(≒緯度)
56 public double getLatitude(){
61 * ターゲットから見たカメラの仰俯角(≒緯度)を設定する。
62 * @param latitude ターゲットから見たカメラの仰俯角(≒緯度)
64 public void setLatitude(double latitude){
65 this.latitude = latitude;
71 * @return Y軸周りの回転量(≒経度)
73 public double getLongitude(){
74 return this.longitude;
79 * @param longitude Y軸周りの回転量(≒経度)
81 public void setLongitude(double longitude){
82 this.longitude = longitude;
87 * レンズをターゲットを向けたカメラのロール回転量を返す。
88 * @return レンズをターゲットを向けたカメラのロール回転量
90 public double getRoll(){
95 * レンズをターゲットを向けたカメラのロール回転量を設定する。
96 * @param roll レンズをターゲットを向けたカメラのロール回転量
98 public void setRoll(double roll){
105 * @return {@inheritDoc}
108 public String toString(){
110 msg = MessageFormat.format(MSG_TXT,
111 this.latitude, this.longitude, this.roll );