private void setForwardTransform(Transform3D forwardTransform) { this.forwardTransform = forwardTransform; reverseTransform = new Transform3D(forwardTransform); reverseTransform.invert(); }
private Vector3D absToRel (Vector3D r) { Transform3D t = getTransform(); Matrix3d m = new Matrix3d(); t.get(m); Vector3d zero = new Vector3d(0, 0, 0); Transform3D rotation = new Transform3D(m, zero, 1.0); Vector3f vec = createVector3f(r); rotation.invert(); rotation.transform(vec); return new Vector3D(vec); }
private Vector3D absToRel (Vector3D r) { Transform3D t = getTransform(); Matrix3d m = new Matrix3d(); t.get(m); Vector3d zero = new Vector3d(0, 0, 0); Transform3D rotation = new Transform3D(m, zero, 1.0); Vector3f vec = createVector3f(r); rotation.invert(); rotation.transform(vec); return new Vector3D(vec); }
private void calculateCenters() { localCenter = new Point3d(boxVector); localCenter.scale(0.5); rootCenter = new Point3d(localCenter); forwardTransform.transform(rootCenter); forwardCenterTransform = new Transform3D(forwardTransform); forwardCenterTransform.mul(toTransform(new Vector3d(localCenter))); reverseCenterTransform = new Transform3D(forwardCenterTransform); reverseCenterTransform.invert(); }
public void lookAt (Vector3D center, Vector3D up) { Transform3D t = getTransform(); Transform3D t2 = new Transform3D(t); Vector3f translation = new Vector3f(); t2.get(translation); Vector3d scales = new Vector3d(); t2.getScale(scales); Point3d trans = new Point3d(translation); Point3d c = new Point3d(center.x, center.y, center.z); Vector3d u = createVector3d(up); t2.lookAt(trans, c, u); try { t2.invert(); t2.setScale(scales); setTransform(t2); } catch (SingularMatrixException sme) { System.out.println("Singular matrix, bad lookAt()!"); } }
public void lookAt (Vector3D center, Vector3D up) { Transform3D t = getTransform(); Transform3D t2 = new Transform3D(t); Vector3f translation = new Vector3f(); t2.get(translation); Vector3d scales = new Vector3d(); t2.getScale(scales); Point3d trans = new Point3d(translation); Point3d c = new Point3d(center.x, center.y, center.z); Vector3d u = createVector3d(up); t2.lookAt(trans, c, u); try { t2.invert(); t2.setScale(scales); setTransform(t2); } catch (SingularMatrixException sme) { System.out.println("Singular matrix, bad lookAt()!"); } }
/** * Uses a the default height to create the ceiling positions and links * between floor and ceiling positions. * * @param shape The original shape. * @param unitTransform Transform from root to unit coordinates. * @return The shape with updated information. */ private Shape updateCeilingAndLinks(final Shape shape, final Transform3D unitTransform) { Transform3D inverseTransform = new Transform3D(unitTransform); inverseTransform.invert(); Shape.Builder newBuilder = shape.toBuilder(); newBuilder.clearCeiling(); newBuilder.clearFloorCeilingEdge(); for (int i = 0; i < shape.getFloorCount(); i++) { newBuilder.addCeiling(addHeight(shape.getFloor(i), unitTransform, inverseTransform)); newBuilder.addFloorCeilingEdge(FloorCeilingEdgeIndices.newBuilder().setFloorIndex(i).setCeilingIndex(i)); } return newBuilder.build(); }