Path: news.mathworks.com!not-for-mail
From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Re: Rotate 3D object to align with x-y plane
Date: Wed, 11 May 2011 18:27:02 +0000 (UTC)
Organization: The MathWorks, Inc.
Lines: 33
Message-ID: <iqekdm$8hq$1@newscl01ah.mathworks.com>
References: <ip7abl$p2g$1@fred.mathworks.com> <ip9d1c$29t$1@fred.mathworks.com> <ip9j6d$kmc$1@fred.mathworks.com> <iqebkk$d1c$1@newscl01ah.mathworks.com>
Reply-To: <HIDDEN>
NNTP-Posting-Host: www-04-blr.mathworks.com
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: newscl01ah.mathworks.com 1305138422 8762 172.30.248.35 (11 May 2011 18:27:02 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Wed, 11 May 2011 18:27:02 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1187260
Xref: news.mathworks.com comp.soft-sys.matlab:726245

"Matt J" wrote in message <iqebkk$d1c$1@newscl01ah.mathworks.com>...
> .......
> And therefore your approach needs to be modified from a pure rotation to an affine transform, no?  ........
- - - - - - - - -
  No, Matt, that isn't true.  Remember that an assumption was made by Greg that "the origin is at the center of gravity of the three points" and weakened by me to simply that the origin is "to lie somewhere in the triangle's plane".  With either of these assumptions, the pure rotation R will bring the three points into the xy-plane.

  Here's an example.  It is easy to show that the three points of the rows of xyz are coplanar with the origin - the volume of the tetrahedron they form with the origin is zero.

xyz =

   1.03072751719372   1.03710039288023  -0.47172543062421
  -1.28711731083625  -0.84785872257114  -0.24727209937913
  -0.54211111717983   0.36846849121402  -1.46103428529782

The resulting R and xyz2 from my code are:

R =

                  0  -0.83020044023651   0.55746500251685
  -0.47154841677308  -0.49159503423629  -0.73210409980618
   0.88184017295585  -0.26287173934322  -0.39147970319783

xyz2 =

  -0.90502948362674  -1.24154055724192   0.00000000000000
   0.18175196739202   1.55036934269703  -0.00000000000000
  -1.46214946050419   0.65298823140276  -0.00000000000000

The determinant of R is +1, so it is a pure rotation and it has brought the three points into the x-y plane.  In fact it is, of necessity, a rotation, as I pointed out, about "some line through the origin and lying in the plane bisecting the dihedral angle between the triangle's plane and the x-y plane."

  (Note that there was a typo in my original code with 'xys' being in place of 'xyz' at one point.)

Roger Stafford