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