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