001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.plugins.streetside.cubemap; 003 004/** 005 * @author Dub 006 */ 007 008import javafx.scene.Group; 009import javafx.scene.transform.Rotate; 010import javafx.scene.transform.Scale; 011import javafx.scene.transform.Translate; 012 013@SuppressWarnings("restriction") 014public class CameraTransformer extends Group { 015 016 public enum RotateOrder { 017 XYZ, XZY, YXZ, YZX, ZXY, ZYX 018 } 019 020 public Translate t = new Translate(); 021 public Translate p = new Translate(); 022 public Translate ip = new Translate(); 023 public Rotate rx = new Rotate(); 024 { 025 rx.setAxis(Rotate.X_AXIS); 026 } 027 public Rotate ry = new Rotate(); 028 { 029 ry.setAxis(Rotate.Y_AXIS); 030 } 031 public Rotate rz = new Rotate(); 032 { 033 rz.setAxis(Rotate.Z_AXIS); 034 } 035 public Scale s = new Scale(); 036 037 public CameraTransformer() { 038 super(); 039 getTransforms().addAll(t, rz, ry, rx, s); 040 } 041 042 public CameraTransformer(CameraTransformer.RotateOrder rotateOrder) { 043 super(); 044 switch (rotateOrder) { 045 case XYZ: 046 getTransforms().addAll(t, p, rz, ry, rx, s, ip); 047 break; 048 case XZY: 049 getTransforms().addAll(t, p, ry, rz, rx, s, ip); 050 break; 051 case YXZ: 052 getTransforms().addAll(t, p, rz, rx, ry, s, ip); 053 break; 054 case YZX: 055 getTransforms().addAll(t, p, rx, rz, ry, s, ip); // For Camera 056 break; 057 case ZXY: 058 getTransforms().addAll(t, p, ry, rx, rz, s, ip); 059 break; 060 case ZYX: 061 getTransforms().addAll(t, p, rx, ry, rz, s, ip); 062 break; 063 } 064 } 065 066 public void setTranslate(double x, double y, double z) { 067 t.setX(x); 068 t.setY(y); 069 t.setZ(z); 070 } 071 072 public void setTranslate(double x, double y) { 073 t.setX(x); 074 t.setY(y); 075 } 076 077 public void setTx(double x) { 078 t.setX(x); 079 } 080 081 public void setTy(double y) { 082 t.setY(y); 083 } 084 085 public void setTz(double z) { 086 t.setZ(z); 087 } 088 089 public void setRotate(double x, double y, double z) { 090 rx.setAngle(x); 091 ry.setAngle(y); 092 rz.setAngle(z); 093 } 094 095 public void setRotateX(double x) { 096 rx.setAngle(x); 097 } 098 099 public void setRotateY(double y) { 100 ry.setAngle(y); 101 } 102 103 public void setRotateZ(double z) { 104 rz.setAngle(z); 105 } 106 107 public void setRx(double x) { 108 rx.setAngle(x); 109 } 110 111 public void setRy(double y) { 112 ry.setAngle(y); 113 } 114 115 public void setRz(double z) { 116 rz.setAngle(z); 117 } 118 119 public void setScale(double scaleFactor) { 120 s.setX(scaleFactor); 121 s.setY(scaleFactor); 122 s.setZ(scaleFactor); 123 } 124 125 public void setScale(double x, double y, double z) { 126 s.setX(x); 127 s.setY(y); 128 s.setZ(z); 129 } 130 131 public void setSx(double x) { 132 s.setX(x); 133 } 134 135 public void setSy(double y) { 136 s.setY(y); 137 } 138 139 public void setSz(double z) { 140 s.setZ(z); 141 } 142 143 public void setPivot(double x, double y, double z) { 144 p.setX(x); 145 p.setY(y); 146 p.setZ(z); 147 ip.setX(-x); 148 ip.setY(-y); 149 ip.setZ(-z); 150 } 151 152 public void reset() { 153 t.setX(0.0); 154 t.setY(0.0); 155 t.setZ(0.0); 156 rx.setAngle(0.0); 157 ry.setAngle(0.0); 158 rz.setAngle(0.0); 159 s.setX(1.0); 160 s.setY(1.0); 161 s.setZ(1.0); 162 p.setX(0.0); 163 p.setY(0.0); 164 p.setZ(0.0); 165 ip.setX(0.0); 166 ip.setY(0.0); 167 ip.setZ(0.0); 168 } 169 170 public void resetTSP() { 171 t.setX(0.0); 172 t.setY(0.0); 173 t.setZ(0.0); 174 s.setX(1.0); 175 s.setY(1.0); 176 s.setZ(1.0); 177 p.setX(0.0); 178 p.setY(0.0); 179 p.setZ(0.0); 180 ip.setX(0.0); 181 ip.setY(0.0); 182 ip.setZ(0.0); 183 } 184}