Dynamic Rotation: Coupling of Two or More Graphics3D objects?
- To: mathgroup at smc.vnet.net
- Subject: [mg85857] Dynamic Rotation: Coupling of Two or More Graphics3D objects?
- From: "W. Craig Carter" <ccarter at mit.edu>
- Date: Mon, 25 Feb 2008 07:37:14 -0500 (EST)
Hello,
Can anyone suggest a path that I might explore to couple the
on-screen of one graphical 3d object to another?
I've tried what I consider to be obvious: using Manipulate
to dynamically control viewpoints of several objects, but
this is too slow to be useful for my purposes.
I'd prefer to rotate on object on-screen and have another
(in, say, the same graphics grid) transform in response.
For example:
GraphicsRow[Graphics3D /@ {Cuboid[], Sphere[]}]
For a concrete example. I'd like to rotate the cube about
its origin, but have the sphere rotate about an arbitrary
fixed point.
If I can't do the coupling, the below (kind of) works, but
is cludgy:
Manipulate[
GraphicsRow[{Graphics3D[Cuboid[],
ViewPoint -> 10 {Cos[t] Sin[p], Sin[t] Sin[p], Cos[p]}],
Graphics3D[Cuboid[],
ViewPoint -> {a, b, c} +
10 {Cos[t] Sin[p], Sin[t] Sin[p], Cos[p]}]}],
{{a, 5}, 1, 10}, {{b, 5}, 1, 10}, {{c, 5}, 1, 10},
{{t, Pi}, 0, 2 Pi}, {{p, Pi/2}, -Pi, Pi}]
A potential problem is that I can rotate one and then lose
the correspondence (which I could fix with a result button,
but...)
W. Craig Carter