Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Dynamic Rotation: Coupling of Two or More Graphics3D objects?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg85884] Re: Dynamic Rotation: Coupling of Two or More Graphics3D objects?
  • From: Szabolcs Horvát <szhorvat at gmail.com>
  • Date: Tue, 26 Feb 2008 07:51:51 -0500 (EST)
  • Organization: University of Bergen
  • References: <fpucui$mcd$1@smc.vnet.net>

W. Craig Carter wrote:
> 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...)

Hi, a few days ago I sent an example exactly for this:

http://groups.google.com/group/comp.soft-sys.math.mathematica/msg/b0b89dd8d573fa14

Here's the example again:

gr = Graphics3D[Cuboid[], SphericalRegion -> True, Boxed -> False]

(* Initialize vp and vv with the default values: *)

vp = ViewPoint /. Options[Graphics3D]
vv = ViewVertical /. Options[Graphics3D]

Row[
  {Show[gr, ViewPoint -> Dynamic[vp], ViewVertical -> Dynamic[vv]],
   Show[gr, ViewPoint -> Dynamic[vp], ViewVertical -> Dynamic[vv]]}
]

I hope this helps,
Szabolcs


  • Prev by Date: Re: Module and Manipulate Oddity
  • Next by Date: Re: Dynamic Rotation: Coupling of Two or More Graphics3D objects?
  • Previous by thread: Dynamic Rotation: Coupling of Two or More Graphics3D objects?
  • Next by thread: Re: Dynamic Rotation: Coupling of Two or More Graphics3D objects?