超级版主
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
|
racking points on a rigid body when rot, and trans for c.g
tracking points on a rigid body when rot, and trans for c.g.
hello all,
i've created a 3d simulation of a system i'm working on. i can easily output the main bodies rotation (all three axis) and translation (x,y,z). getting my program to keep track of points on the body is a pain. i'm thinking that i can just write a matlab program that uses the points (relative to the c.g) and the translation, rotation files to come up with the displacements of the points on the body.
i was thinking that:
deltax = deltacgx-(z*roty-y*rotz)
deltay = deltacgy-(x*rotz-z*rotx)
deltaz = deltacgz-(y*rotx-x*roty)
where delta x is my point of interest x displacement
deltacgx is the cg x displacement (read from file)
x, y, z = coordinates of points of interest
rotx = rotation about x axis.
any one have any thoughts? any other ideas on how to do this? thanks
eng-tips forums is member supported.
generally sounds fine but ...
1) not sure about your signs (+ve roty*+vez = +vedeltax, no?); and
2) shouldn't there be a cosine/sine term in there, ie deltax = z*cos(roty)
thanks for responding rb1957,
i'll take a look at my signs again, thought that i had them right, right hand rule and all.
as for second part i'm basically thinking that say i rotate about the y axis .1 rads, now find the translation this causes in the x direction. the x displacement (opposite leg) can be found by taking the z coord (adjacent leg, z distance from c.g.) and multiplying it by the tan of the angle of the rotation (roty) since i'm looking at very small rotations i didn't include the tan function (tan .06 = .0600721).
what do you think? if there's a simpler solution that takes advantage of matlabs capabilities i'd really like to hear about it
you should probably read quaternions and rotation sequences, by kuipers, princeton university press, 1999.
first, you need to determine whether you're using a right-handed coordinate system, or not. either way, you need to be absolutely consistent. you need to determine the rotation sequence, be it yaw, pitch, roll, or whatever. either way, you need to be absolutely consistent.
you need to at least do the full rotation matrices, and pick either the correct sequence, and stick with it, or, you need to use quaternions.
you should avoid using the approximations, because despite what you say or think now, you'll do something in the future that's going cause all the approximations to blow up the matrices, and you'll have to fix it after the fact.
ttfn
you were right about having to do the full rotational matrices. and as i found out the hard way the order of wrapping is crucuial. for others that are out there just go with a direction cosine matrix transformation and be done with it. a little more typing at the start but the results matched perfectly with my model.
shockdesigner331 - the advice that irstuff gave, use quaternions, is the very best way to go although kuipers book is not very helpful in learning to use quaternions to perform rotation mathematics. there is very little literature that will actually help you learn quaternion basics. quaternions are simple in concept and simple to use once the fundamentals are understood. best of luck.
a famous mathematician once described quaternions as an invention of the devil, or something like that.
cheers
greg locock
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]
|