0
|
16335 Views
|
4 Replies
|
2 Total Likes
View groups...
Share
GROUPS:

# Trying to rotate 3D Plot (using Rotate and ImageRotate)

Posted 9 years ago
 Hello! I am trying to use ImageRotate to rotate my image by Pi/3 around a specific axis. Here's what I'm trying to do. First I make a 3D plot: a = SphericalPlot3D[1, {\[Theta], 0, \[Pi]}, {\[Phi], 0, 2 \[Pi]}, ColorFunction -> Function[{x, y, z, \[Theta], \[Phi], r}, ColorData["DarkRainbow"][ E^-((\[Theta] - \[Pi]/2)^2/(2 \[Sigma]) + (\[Phi] - \[Pi])^2/( 2 \[Sigma]))]], ColorFunctionScaling -> False, Mesh -> True, Boxed -> False, Axes -> False, PlotPoints -> 150, ViewPoint -> {-2, 0, 0}, ImageSize -> 300]  Now I can rotate it using ImageRotate: ImageRotate[a, Pi/3]  But now if I try and rotate around a specific axis (exactly the same way as the documentation), I get an error message: ImageRotate[a, {Pi/3, {1, 0, 0}}] ImageRotate::imgang: Angle {\[Pi]/3,{1,0,0}} should be a real number, one of Top, Bottom, Left, Right, or a rule from one to another. >>  Also I tried using Rotate a similar thing happens i.e. I can do it without choosing an axis: Rotate[a,Pi/3}  But I get an error if I do Rotate[a,Pi/3,{1,0,0}] Coordinate {1, 0, 0} should be a pair of numbers, or a Scaled or Offset form.  Does anybody why this is happening? Thank you!
4 Replies
Sort By:
Posted 9 years ago
 Hello,Rotate works on graphics primitives (Sphere, Cylinder, Cuboid ...). ListContourPlot3D is not a graphics primitive.In 3D, Rotate can rotate around any given 3D vector. Check this:  Manipulate[ Show[ Graphics3D@Sphere[], Graphics3D@Rotate[Cuboid[], angle, {1, 0, 0}], PlotRange -> {{-1.5, 1.5}, {-1.5, 1.5}, {-1.5, 1.5}} ], {{angle, 0}, -\[Pi], \[Pi]} ] 
Posted 9 years ago
 Hi there All, I have a related problem, but first I would like to say to @Rajiv Krishnakumar, Mathematica is already answering part of your question and is asking you to give only a 2D vector, or pair of numbers, although the help of the rotate function states that you can give a 3D Vector, it is confusing. I have not discovered yet how to use the Rotate and the Show function for a 3D Graphic, can anyone tell me how to Rotate a 3D Graphic and the combine the rotated Graphic with other 3D Graphics? .Graph1 = ListContourPlot3D[ Table[x^2 + y^2 - z^2 + RandomReal[0.1], {x, -2, 2, 0.2}, {y, -2, 2, 0.2}, {z, -2, 2, 0.2}], Contours -> {0}, Mesh -> None] Head[Graph1]= Graphic3DIf Rotate is used Esta= Rotate[Graph1, Pi/2] the Head of the Output gets changed to rotate Head[Esta] = Rotate and the rotated Graphic can NOT be combined with other Graphics with Show. The conversion to Graphic with Show is also not possible and delives the "error" message: Show[Esta] Show::gtype: Rotate is not a type of graphics. >> No luck also with function->Graphics Graphics[Esta] Does anyone can help with this Problem?Thanks in advance for your help Wishing you All Joy and Happiness
Posted 9 years ago
 Thanks for the reply Sean!As mentioned above, I did also try the "Rotate" function as such: Rotate[a,Pi/3,{1,0,0}] And I got the error: Coordinate {1, 0, 0} should be a pair of numbers, or a Scaled or Offset form. Any idea why?Thanks!
Posted 9 years ago
 Mathematica distinguishes between "Images" and "Graphics". See the documentation for information about them. ImageRotate is for Images, but SphericalPlot3D produces a Graphic. There is a specific function for Graphics rotation: https://reference.wolfram.com/language/ref/Rotate.htmlRotate[a, Pi/2, {0, 0, 1}]Another way to do this is to use the ViewPoint option: http://reference.wolfram.com/language/ref/ViewPoint.html