Re: Rotation of 3D objects

*To*: mathgroup at smc.vnet.net*Subject*: [mg86314] Re: Rotation of 3D objects*From*: "Fred Klingener" <gigabitbucket at gmail.com>*Date*: Sat, 8 Mar 2008 05:41:36 -0500 (EST)*References*: <fqo8u2$t2s$1@smc.vnet.net>*Reply-to*: "Fred Klingener" <gigabitbucket at gmail.com>

"Narasimham" <mathma18 at hotmail.com> wrote in message news:fqo8u2$t2s$1 at smc.vnet.net... > By what command is it possible to create (without writing a code > separately ): > > 1) Reflections of 3D objects about a plane? How about: surf = ParametricPlot3D[{t, u + t, u*t/5}, {t, 0, 2}, {u, -1, 1}]; Graphics3D[{#, # /. GraphicsComplex[nodelist_, rest__] -> GraphicsComplex[ReflectionTransform[{1, 0, 0}, {0, 0, 0}][nodelist], rest]} &@First[surf]] > 2) Multiple copies equally spaced by rotation around an axis through > two given points? Same approach (sort of) works: Manipulate[ Graphics3D[ Table[First[surf] /. GraphicsComplex[nodelist_, rest__] -> GraphicsComplex[ RotationTransform[j 2 Pi/n, {0, 0, 1}, {-1, -1, 0}][nodelist], rest], {j, 0, n - 1}]] , {n, {1, 2, 3, 4, 5, 6}}] To understand the method, note the returns from the following: Head[surf] surf Head[First[surf]] Graphics3D[First[surf]] Shallow[First[surf]] If you want to inspect the many screenloads of GraphicsComplex in its full glory, look at First[surf]//InputForm First[surf] is a GraphicsComplex (which can be rendered with Graphics3D[First[surf]]). It has a structure that leads with a node List that can be extracted with a pattern, transformed with the usual tools, then reassembled into a new GraphicsComplex. You can inspect the node list alone with First[surf] /. GraphicsComplex[nodelist_, rest__] -> nodelist > 3) A single rotation of given object through a given angle on an axis > through two defined points? If I understand the question, this is a matter of using your two points to generate the parameters of your choice for the RotationTransform. Hth, Fred Klingener