code: private void calcTransformation() {
  
  		// transformation.set(rotmat,new Vector3d(0,0,0), 1);
  		transformation.set(rotmat);
  		// long t2 = System.nanoTime();
  		// System.out.println("create transformation: " + (t2-t1));
  		// System.out.println("m3d -> m4d");
  		// System.out.println(transformation);
  
  		// combine with x -> origin translation
  		Matrix4d trans = new Matrix4d();
  		trans.setIdentity();
  		trans.setTranslation(new Vector3d(xtrans));
  		transformation.mul(transformation, trans);
  		// System.out.println("setting xtrans");
  		// System.out.println(transformation);
  
  		// combine with origin -> y translation
  		ytrans.negate();
  		Matrix4d transInverse = new Matrix4d();
  		transInverse.setIdentity();
  		transInverse.setTranslation(new Vector3d(ytrans));
  		transformation.mul(transInverse, transformation);
  		// System.out.println("setting ytrans");
  		// System.out.println(transformation);
  	}
docs: Superposition coords2 onto coords1 -- in other words, coords2 is rotated,
  coords1 is held fixed