Subject says it all: I don't seem to be understanding how Mathematica's functions for rotating 3D objects work. Below is a simple example: What I want to do is rotate the cube in the example around an axis normal to the view vector through the center of the cube. What I expect to see is a "spinning" cube, at a fixed position and size. Here is my code:
cgxt[t_] :=
Graphics3D[Rotate[{EdgeForm[],
Hue[30,100,100],
Cuboid[{1,1,1} - 1/2, {1,1,1} + 1/2]},
-t Degree, {1, -1, 0}, {1, 1, 1}],
Lighting -> {{"Ambient", RGBColor[0.7, 0.7, 0.7]},
{"Directional", RGBColor[0.7, 0.7, 0.7],
ImageScaled[{0, 5, 0}]}}, Boxed -> False];
which I then demonstrate with
Manipulate[Show[cgxt[t], ViewPoint -> {1000, 1000, 1000}], {t, 0, 180}]
This does not have the desired effect: It looks like the cube is rotated around some off-center axis, changing size as it does so. Interestingly, this effect does not seem to change if I change the location of my cube or the location of the rotation axis independently.
Can someone explain to me what I am missing?
Note (added after discussion below): The following function works as expected, but it's still unclear to me why Mathematica does what it does.
cgxt2[t_] :=
Graphics3D[Rotate[{EdgeForm[],
Hue[30,100,100],
Cuboid[{1,1,1} - 1/2, {1,1,1} + 1/2]},
-t Degree, {1, -1, 0}, {1, 1, 1}],
Lighting -> {{"Ambient", RGBColor[0.7, 0.7, 0.7]},
{"Directional", RGBColor[0.7, 0.7, 0.7],
ImageScaled[{0, 5, 0}]}}, Boxed -> False,
PlotRange -> 2 size {{-1, 1}, {-1, 1}, {-1, 1}}];