MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Rotating a list of 3D point coordinates in one shot

  • To: mathgroup at smc.vnet.net
  • Subject: [mg100022] Re: Rotating a list of 3D point coordinates in one shot
  • From: Albert Retey <awnl at gmx-topmail.de>
  • Date: Fri, 22 May 2009 01:43:00 -0400 (EDT)
  • References: <gv2k0e$9gs$1@smc.vnet.net>

Bill wrote:
> Hi:
>
> I have a list of 3D coordinates:
>
> list={{1., 0., 0.}, {0.987688, 0.156434, 0.},
> {0.951057, 0.309017, 0.}, {0.891007, 0.45399, 0.}, {0.809017, 0.587785,=
 0.}, {0.707107, 0.707107, 0.},
> {0.587785,0.809017, 0.}, {0.45399, 0.891007, 0.}, {0.309017, 0.951057, =
0.}, {0.156434, 0.987688, 0.},
> {0., 1., 0.}, {-0.156434, 0.987688, 0.},
> {-0.309017, 0.951057, 0.}, {-0.45399, 0.891007, 0.},
> {-0.587785, 0.809017, 0.}, {-0.707107, 0.707107, 0.},
> {-0.809017, 0.587785, 0.}, {-0.891007, 0.45399, 0.},
> {-0.951057, 0.309017, 0.}, {-0.987688, 0.156434, 0.},
> {-1., 0., 0.}}.
>  
> I'd like to rotate all the coordinates in the list in one shot, using s=
omething like this:
>  
> Rotate[list, 180 Degree, {-1, -2, -1}]}} (*Axis angle rotation.*)
>  
> I haven't gotten this to work though. I can rotate a single point at a =
time using a similiar method, but
> that is very time consuming.
>  
>  Question: Is there a way to rotate a list of numerous 3D coordinates s=
uch as in my example above, and if so, how do I code that using Mathemati=
ca 6.0.1?
>  
Rotate is for graphics primitives, not for just coordinates, so any of
the following will work:

Graphics3D[Rotate[Line[list], 180 =B0, {-1, -2, -1}]]

Graphics3D[Rotate[Point[list], 180 =B0, {-1, -2, -1}]]

If you inspect the output with FullForm you will notice that the
rotation is not resolved by the Kernel, but obviously only the rendering
system will be doing the final rotate. I think this might be much more
efficient.

If you have things that consist of more than just one graphics
primitive, you can rotate them all together by grouping them with a
list, e.g.:

lineandpoints = {Red, Point[list], Opacity[0.5], Black, Line[list]};

Graphics3D[Rotate[lineandpoints,180 Degree, {-1, -2, -1}]]

hth,

albert


  • Prev by Date: Re: 100,000 posts!
  • Next by Date: Re: Rotating a list of 3D point coordinates in one shot
  • Previous by thread: Re: Rotating a list of 3D point coordinates in one shot
  • Next by thread: Re: Rotating a list of 3D point coordinates in one shot