Hi,
hemanth korrapati wrote:
Hi
I am expecting my code to first rotate the point along y-axis and then
rotate the resultant point across x-axis. but only the rotation along
z is happening but not along x.
The order you are expecting and the order in the code might not match.
Try swapping the order of multiplication. You can search the archives of
pre vs post multiplication.
but its happening when i use a code like this:
---------------------------------------
osg::Matrixd mat,mat1;
mat.makeRotate(osg::DegreesToRadians(-45.0),osg::Vec3(.0,.0,1.0));
mat1.makeRotate(osg::DegreesToRadians(-45.0),osg::Vec3(1.0,.0,0.0));
osg::Vec3 temp(2000,0.0,0.0);
mat1=mat1*mat;
temp=mat1*temp;
--------------------------------------------
Is this an effecient way or are there some other ways ?
Also to make the desired 45 deg rotation along z and x axes I am
giving -45 as argument as you can see from the above code. If I give
45 deg then it is rotating in the clockwise direction. I am seeing the
output visually.
The +/- swaps normally occur when the axis that you think you are
rotating around is actually flipped.
Why does this happen ?
It is quite easy to get rotations confused by either confusing the
coordinate system the rotations are taking place in or confusing the
rotation order. What can also confuse matters is if the coordinate
system of the model and the coordinate system of the viewer does not match.
Rotations can always be visualised from two viewpoints: 1) You are
sitting in the object and the axis system is rotating with you. 2) You
are external to the object and the rotations are being done in a fixed
coordinate system.
In code 1 and 2 are different in terms of the order that you specify the
rotations in.
jp
Thank You
On Mon, Dec 22, 2008 at 2:42 PM, Vincent Bourdier
<[email protected]> wrote:
Hi,
It sound normal for me to have a y rotation for result.
Make a little drawing, you will see that.
Vincent.
2008/12/22 hemanth korrapati <[email protected]>
hi all,
I want to rotate a point which is on x-axis by 45 degrees w.r.t z-axis
and 45 degrees w.r.t x-axis. So I am using the following code
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
osg::Matrixd mat;
mat.setRotate(osg::Quat(osg::DegreesToRadians(45.0),osg::Vec3d(.0,0.0,1.0))*osg::Quat(osg::DegreesToRadians(45.0),osg::Vec3d(1.0,0.0,0.0)));
osg::Vec3 temp(2000,0.0,0.0);
temp=mat*temp;
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
After this I see that only the point is rotated across y-axis(i.e the
first rotation) but not along x-axis. (only one rotation performed)
also it rotates in the negative direction.
dows anyone know why these things happen ?
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
--
This message is subject to the CSIR's copyright terms and conditions, e-mail legal notice, and implemented Open Document Format (ODF) standard.
The full disclaimer details can be found at http://www.csir.co.za/disclaimer.html.
This message has been scanned for viruses and dangerous content by MailScanner,
and is believed to be clean. MailScanner thanks Transtec Computers for their support.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org