Re: Rotation of 3D objects
- To: mathgroup at smc.vnet.net
- Subject: [mg87171] Re: Rotation of 3D objects
- From: Narasimham <mathma18 at hotmail.com>
- Date: Thu, 3 Apr 2008 05:14:29 -0500 (EST)
- References: <fqo8u2$t2s$1@smc.vnet.net> <fqqruv$kbq$1@smc.vnet.net>
On Mar 25, 11:19 am, Narasimham <mathm... at hotmail.com> wrote: > On Mar 7, 12:47 pm, "David Park" <djmp... at comcast.net> wrote: > > > > > Here is some code for those who have the Presentations package. > > > For reflection in a mirror: > > > Needs["Presentations`Master`"] > > > Module[ > > {(* object to reflect *) > > gr = ParametricDraw3D[{t, u + t, u t/5}, {t, 0, 2}, {u, -1, 1}, > > Mesh -> 5, > > BoundaryStyle -> Black], > > (* Mirror location and normal *) > > p = {1, 1, 2}, > > normal = {0, 0, 1}, > > vector1, vector2}, > > {vector1, vector2} = NullSpace[{normal}]; > > Draw3DItems[ > > {(* Original object *) > > {Opacity[.7, HTML[DarkSeaGreen]], gr}, > > (* Reflected object *) > > {Opacity[.7, HTML[DodgerBlue]], gr} // > > ReflectionTransformOp[normal, p], > > (* Draw the mirror *) > > {Opacity[0.3, HTML[SkyBlue]], > > ParametricDraw3D[ > > p + s vector1 + t vector2, {s, -3, 3}, {t, -3, 3}, > > Mesh -> None]}}, > > NeutralLighting[0, 0.6, .1], > > NiceRotation, > > ViewPoint -> {2, -2.4, .6}, > > Boxed -> False, > > ImageSize -> 300] > > ] > > > Multiple copies of rotation about an axis: > > > Module[ > > {(* object to reflect *) > > gr = ParametricDraw3D[{t, u + t, u t/5}, {t, 0, 2}, {u, -1, 1}, > > Mesh -> 5, > > BoundaryStyle -> Black], > > (* axis, location and number of copies *) > > axis = {1, 1, 0}, > > axislocation = {-1.5, -1.5, 2}, > > ncopies = 4, > > rotationangle}, > > rotationangle = 2 \[Pi]/ncopies; > > Draw3DItems[ > > {(* Rotations *) > > {Opacity[.7, HTML[DarkSeaGreen]], > > Table[gr // > > RotationTransformOp[n rotationangle, axis, axislocation], {n= , = > 0, > > ncopies - 1}]}, > > (* Draw the axis *) > > Red, Arrow3D[axislocation, axislocation + 5 axis, {.10}]}, > > NeutralLighting[0, 0.6, .1], > > NiceRotation, > > ViewPoint -> {-1, -2.4, .6}, > > Boxed -> False, > > ImageSize -> 300] > > ] > > > A Manipulate statement allowing the rotation about an axis by an adjusta= bl= > e > > angle theta. > > > Manipulate[ > > Module[ > > {(* object to reflect *) > > gr = ParametricDraw3D[{t, u + t, u t/5}, {t, 0, 2}, {u, -1, 1},= > > Mesh -> 5, > > BoundaryStyle -> Black], > > (* axis direction and location *) > > axis = {1, 1, 0}, > > axislocation = {-1.5, -1.5, 2}}, > > Draw3DItems[ > > {(* Original object *) > > {Opacity[.7, HTML[DarkSeaGreen]], gr}, > > (* Rotated object *) > > {Opacity[.7, HTML[DodgerBlue]], > > gr // RotationTransformOp[\[Theta], axis, axislocation]}, > > (* Draw the axis *) > > Red, Arrow3D[axislocation, axislocation + 5 axis, {.10}]}, > > NeutralLighting[0, 0.6, .1], > > NiceRotation, > > PlotRange -> {{-1, 4}, {-1, 4}, {-1, 5}}, > > ViewPoint -> {-1, -2.4, .6}, > > Boxed -> False, > > ImageSize -> 300] > > ], > > Style["Rotation about axis by angle \[Theta]", 16], > > {\[Theta], 0, 2 \[Pi], Appearance -> "Labeled"}] > > > -- > > David Park > > djmp... at comcast.nethttp://home.comcast.net/~djmpark/ > > > "Narasimham" <mathm... 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? > > > > 2) Multiple copies equally spaced by rotation around an axis throug= h > > > two given points? > > > > E.g., > > > surf = ParametricPlot3D[{ t,u+t, u*t/5}, {t,0,2},{u,-1,1}]; > > > Rotate[surf,Axis->{ {-1,-1,-1},{1,1,1}} , Copies-> 4 ] ; and, > > > > 3) A single rotation of given object through a given angle on an axis > > > through two defined points? > > > > Thanks in advance > > > > Narasimham- Hide quoted text - > > > - Show quoted text - > > Actually in engineering drawing software e.g., CATIA, Autocad Pro E > &c. such 3D operations are routinely implemented, clicking on a > standard GUI...the mathematical basis of which I was sure is well > within Mathematica's range of computational capabilities. ( and it > also appeared in 200 seconds. ).Mathematica gives the user an > advantage to see those steps, or look into the black box.Of course, > some minimum code lines have to be written. > > Regards, > Narasimham Thanks David Park for the earler reply. (Sorry my error, the above msg is posted here but meant to follow Jen's msg). Is it possible to have a same frame of reference to Show another 3D object together with say 3 rotated copies of an object out of the slider ? Narasimham