[osg-users] osg::Matrixd --> How to remove rotation for acertainaxis?

Thrall, Bryan bryan.thrall at flightsafety.com
Mon Feb 4 11:09:33 PST 2008


Tobias Münch wrote on Monday, February 04, 2008 1:01 PM:
> This works, but only partially.
> 
> All Object that are near the coordinate axes where fixed in rotation.
> But everything with a certain height above the axis zero level will
> be rotated. So the final images gets ugly distorted (Looks like it is
> sheared). I played a little bit with the values and indces, but
> couldn't improve it.    

It isn't clear exactly what you mean, but it sounds like the issue is now just how to get the right rotation in the matrix; you can look up matrix math and rotations on Wikipedia or in a good graphics textbook.

Sorry I can't be more help.

> On Feb 4, 2008 7:23 PM, Thrall, Bryan <bryan.thrall at flightsafety.com>
> wrote: 
> 
> 
> 
> 	Sorry, hit send too soon, updated below...
> 
> 	Thrall, Bryan wrote on Monday, February 04, 2008 12:21 PM:
> 
> 	> Tobias Münch wrote on Monday, February 04, 2008 11:29 AM:
> 
> 	>> Hello at all,
> 	>>
> 	>> I have osg::Matrixd view matrix and want to remove the rotation
> 	>> around x- and y-axis. Only rotation around z-axis should stay in
> 	the >> matrix. I try a lot of possibilties but couldn't find a
> 	solution. >>
> 	>> When I make the following steps, the rotation around all axis is
> 	>> removed, not only the two specified axis. The same with
> 	>> osg::Matrixd::makeRotate(..);
> 	>>
> 	>> matrix = osg::Matrixd::rotate(osg::DegreesToRadians(0.0),
> 	>> osg::Vec3(0,1,0));
> 	>>
> 	>> matrix = osg::Matrixd::rotate(osg::DegreesToRadians(0.0),
> 	>> osg::Vec3(1,0,0));
> 	>>
> 	>>
> 	>> I also tried to set the matrix with complete new values and to
> 	take >> given value for z-rotation, but therefore I miss a function
> 	to read >> the one rotation part (around the z-axis).
> 	>>
> 	>> How can help me?
> 	>
> 
> 	> Both of those lines *set* matrix to a non-rotating matrix; what you
> 	> want is to *modify* the matrix to remove the X and Y rotations.
> 	>
> 	> The easiest way is to modify the matrix directly:
> 	>
> 
> 	matrix(0,0) = 1;
> 
> 	matrix(0,1) = 0;
> 	matrix(0,2) = 0;
> 	matrix(1,0) = 0;
> 	matrix(1,1) = 1;
> 	matrix(1,2) = 0;
> 
> 	If I didn't mess up my indices, this zeroes out the X and Y
> rotations while leaving the Z intact. 
- 
Bryan Thrall
FlightSafety International
Bryan.Thrall at flightsafety.com


More information about the osg-users mailing list