Last active
August 29, 2015 14:15
-
-
Save Roland09/72325b03bfc80b138882 to your computer and use it in GitHub Desktop.
Image wall like it was demonstrated at the JavaFX 2.0 presentation. Navigable via left, right and middle mouse button. You can replace the image nodes with WebView nodes and stream videos for every node.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javafx.scene.Group; | |
import javafx.scene.transform.Rotate; | |
import javafx.scene.transform.Scale; | |
import javafx.scene.transform.Translate; | |
// source: | |
// http://docs.oracle.com/javafx/8/3d_graphics/Xform.java.html | |
// http://docs.oracle.com/javafx/8/3d_graphics/jfxpub-3d_graphics.htm | |
public class Xform extends Group { | |
public enum RotateOrder { | |
XYZ, XZY, YXZ, YZX, ZXY, ZYX | |
} | |
public Translate t = new Translate(); | |
public Translate p = new Translate(); | |
public Translate ip = new Translate(); | |
public Rotate rx = new Rotate(); | |
{ rx.setAxis(Rotate.X_AXIS); } | |
public Rotate ry = new Rotate(); | |
{ ry.setAxis(Rotate.Y_AXIS); } | |
public Rotate rz = new Rotate(); | |
{ rz.setAxis(Rotate.Z_AXIS); } | |
public Scale s = new Scale(); | |
public Xform() { | |
super(); | |
getTransforms().addAll(t, rz, ry, rx, s); | |
} | |
public Xform(RotateOrder rotateOrder) { | |
super(); | |
// choose the order of rotations based on the rotateOrder | |
switch (rotateOrder) { | |
case XYZ: | |
getTransforms().addAll(t, p, rz, ry, rx, s, ip); | |
break; | |
case YXZ: | |
getTransforms().addAll(t, p, rz, rx, ry, s, ip); | |
break; | |
case YZX: | |
getTransforms().addAll(t, p, rx, rz, ry, s, ip); // For Camera | |
break; | |
case ZXY: | |
getTransforms().addAll(t, p, ry, rx, rz, s, ip); | |
break; | |
case ZYX: | |
getTransforms().addAll(t, p, rx, ry, rz, s, ip); | |
break; | |
} | |
} | |
public void setTranslate(double x, double y, double z) { | |
t.setX(x); | |
t.setY(y); | |
t.setZ(z); | |
} | |
public void setTranslate(double x, double y) { | |
t.setX(x); | |
t.setY(y); | |
} | |
// Cannot override these methods as they are final: | |
// public void setTranslateX(double x) { t.setX(x); } | |
// public void setTranslateY(double y) { t.setY(y); } | |
// public void setTranslateZ(double z) { t.setZ(z); } | |
// Use these methods instead: | |
public void setTx(double x) { t.setX(x); } | |
public void setTy(double y) { t.setY(y); } | |
public void setTz(double z) { t.setZ(z); } | |
public void setRotate(double x, double y, double z) { | |
rx.setAngle(x); | |
ry.setAngle(y); | |
rz.setAngle(z); | |
} | |
public void setRotateX(double x) { rx.setAngle(x); } | |
public void setRotateY(double y) { ry.setAngle(y); } | |
public void setRotateZ(double z) { rz.setAngle(z); } | |
public void setRy(double y) { ry.setAngle(y); } | |
public void setRz(double z) { rz.setAngle(z); } | |
public void setScale(double scaleFactor) { | |
s.setX(scaleFactor); | |
s.setY(scaleFactor); | |
s.setZ(scaleFactor); | |
} | |
// Cannot override these methods as they are final: | |
// public void setScaleX(double x) { s.setX(x); } | |
// public void setScaleY(double y) { s.setY(y); } | |
// public void setScaleZ(double z) { s.setZ(z); } | |
// Use these methods instead: | |
public void setSx(double x) { s.setX(x); } | |
public void setSy(double y) { s.setY(y); } | |
public void setSz(double z) { s.setZ(z); } | |
public void setPivot(double x, double y, double z) { | |
p.setX(x); | |
p.setY(y); | |
p.setZ(z); | |
ip.setX(-x); | |
ip.setY(-y); | |
ip.setZ(-z); | |
} | |
public void reset() { | |
t.setX(0.0); | |
t.setY(0.0); | |
t.setZ(0.0); | |
rx.setAngle(0.0); | |
ry.setAngle(0.0); | |
rz.setAngle(0.0); | |
s.setX(1.0); | |
s.setY(1.0); | |
s.setZ(1.0); | |
p.setX(0.0); | |
p.setY(0.0); | |
p.setZ(0.0); | |
ip.setX(0.0); | |
ip.setY(0.0); | |
ip.setZ(0.0); | |
} | |
public void resetTSP() { | |
t.setX(0.0); | |
t.setY(0.0); | |
t.setZ(0.0); | |
s.setX(1.0); | |
s.setY(1.0); | |
s.setZ(1.0); | |
p.setX(0.0); | |
p.setY(0.0); | |
p.setZ(0.0); | |
ip.setX(0.0); | |
ip.setY(0.0); | |
ip.setZ(0.0); | |
} | |
public void debug() { | |
System.out.println("t = (" + | |
t.getX() + ", " + | |
t.getY() + ", " + | |
t.getZ() + ") " + | |
"r = (" + | |
rx.getAngle() + ", " + | |
ry.getAngle() + ", " + | |
rz.getAngle() + ") " + | |
"s = (" + | |
s.getX() + ", " + | |
s.getY() + ", " + | |
s.getZ() + ") " + | |
"p = (" + | |
p.getX() + ", " + | |
p.getY() + ", " + | |
p.getZ() + ") " + | |
"ip = (" + | |
ip.getX() + ", " + | |
ip.getY() + ", " + | |
ip.getZ() + ")"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment