Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Say I make a set of three Graphics3D images, here of three different cones, by evaluating:

{Graphics3D[{Cone[{{0, 0, 0}, {2, 3, 4}}, 3]}], 
 Graphics3D[{Cone[{{1, 0, 1}, {1, 1, 1}}, 4]}], 
 Graphics3D[{Cone[{{1, 1, 1}, {9, 9, 9}}, 4]}]}

I would like to manually rotate one of the images showing a single cone, and have the other objects follow that rotation, or at least rotate to the final state once I let go of my mouse. Is this possible?

share|improve this question
Are you asking how to couple the mouse actions that Mathematica supports automatically when a Graphics3D image is displayed? Or are you asking how to do it using some dynamic construct such as Manipulate. I don't think the first is possible. At least, I don't how to do it. I'm sure the second can be done. However, in both cases, you are asking for others to do a heck of a lot work for you with no effort on your part. – m_goldberg Mar 17 '13 at 7:18
@m_goldberg I just want to do the following: rotate one image manually some number of degrees $(\theta,\phi)$, then apply that same rotation to the other images. Surely there must be some simple way to do this? I don't necessarily need the other images to follow dynamically. – Roger Harris Mar 17 '13 at 7:23
What do you mean by "manually"? – m_goldberg Mar 17 '13 at 7:26
@m_goldberg I want to click and drag to orient the image how I'd like. – Roger Harris Mar 17 '13 at 7:27
up vote 11 down vote accepted

Make the settings for both ViewPoint and ViewVertical dynamic:

DynamicModule[{vp = {2, -2, 1}, vv = {0, 0, 1}}, 
GraphicsRow[{Graphics3D[{Cone[{{0, 0, 0}, {2, 3, 4}}, 3]}, SphericalRegion -> True,
  ViewPoint -> Dynamic[vp], ViewVertical -> Dynamic[vv]], 
 Graphics3D[{Cone[{{1, 0, 1}, {1, 1, 1}}, 4]}, SphericalRegion -> True,
  ViewPoint -> Dynamic[vp], ViewVertical -> Dynamic[vv]], 
 Graphics3D[{Cone[{{1, 1, 1}, {9, 9, 9}}, 4]}, SphericalRegion -> True,
  ViewPoint -> Dynamic[vp], ViewVertical -> Dynamic[vv]]}]]

enter image description here

enter image description here

Thanks: @Szabolcs for pointing out the need for ViewVertical in addition to ViewPoint to have the three graphics line up properly.

See also: Yu-Sung Chang's answer/tutorial in response to a related question.

share|improve this answer
Great - perfect! – Roger Harris Mar 17 '13 at 7:35
+1. Well, I knew it could done with a dynamic construct, but I didn't realize it could be done this easily. – m_goldberg Mar 17 '13 at 7:40
A more elaborate answer can be found here. – Sjoerd C. de Vries Mar 17 '13 at 8:00
@Sjoerd, thank you. I was looking for that link. – kglr Mar 17 '13 at 8:07
@Szabolcs, thank you; updated the answer with your suggestion. – kglr Mar 17 '13 at 20:08

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.