# Can this be reduced further?

This topic is 3857 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

-vn = dV0.y * t + sin(atan2(R0)) * |R0| - sin(atan2(R0) + dW0 * t) * |R0| I think that -vn = dV0.y * t + R0.y - sin(atan2(R0.y, R0.x) + dW0 * t) * |R0| is valid, but I feel that I can do even better.

##### Share on other sites
-vn = dV0.y * t + R0.y - R0.y * cos(dW0 * t) + R0.x * sin(dW0 * t)

because

sin(x + y) = sin(x)cos(y) * cos(x)sin(y)

according to

http://en.wikipedia.org/wiki/List_of_trigonometric_identities

##### Share on other sites

-vn = dV0.y * t + R0.y - cos(dW0 * t) * R0.y - sin(dW0 * t) * R0.x

but I still need to solve this for t.

##### Share on other sites
What happened to |R0| in that first step? There's no way to eliminate it in general. Is there something you're not telling us?

Some more identities that may come in handy are:

sin(arctan(x)) = x/√(1 + x2)
cos(arctan(x)) = 1/√(1 + x2)

Edit: This doesn't make sense, in the light of R0 being a vector.
You can end up with a giant fact or of |R0|/√(1 + R02) after applying these (as |R0|2 = R02). I get:

0 = vn - dV0.y * t + |R0|/√(1 + R02) (R0(1 - cos(dW0 * t)) + sin(dW0 * t))

That last term with (A.cos(x) + sin(x)) can be turned into B.sin(x + C) if you like. Anyway, solution is a little ambiguous. There are a lot of constants floating about and they all have an impact on uniqueness of solution. Provided vn is small enough, a solution will exist. Provided R0 isn't particularly awkward, boundedness of (sin + cos) will get you a solution if you iterate on t.

May I ask where you derived this from?

[Edited by - TheAdmiral on May 24, 2007 5:46:53 PM]

##### Share on other sites
R0 is a vector2D, so atan(R0) is really atan2(R0.y, R0.x).

I'm trying to determine, given a ratio of rotational to translational change in response to a collision, what amount of the changes to apply towards my object's rotational velocity and translational velocity in order to cause it to neither penetrate nor separate from the other fixed object.

##### Share on other sites
Quote:
 Original post by pTymNR0 is a vector2D, so atan(R0) is really atan2(R0.y, R0.x).I'm trying to determine, given a ratio of rotational to translational change in response to a collision, what amount of the changes to apply towards my object's rotational velocity and translational velocity in order to cause it to neither penetrate nor separate from the other fixed object.

I see. Well since R0 and vn are essentially arbitrary, there will be no guarantee of a quick-to-converge solution. And as far as I can see, there is no way to manipulate the equation into explicit form.

Wouldn't you be much better off just fudging it, and setting the body to be stationary, letting conservation of momentum take care of the rest? I'm just guessing - I've never had to do this kind of thing. Sure enough though, this problem must have been solved before, so maybe somebody else can guide you better than me.

##### Share on other sites
I've avoided the problem completely at this point. :-) The problem was that for an object that can rotate, when it hit the floor, my iterative solver was going around and around pushing up on the various contact points, but the object's low angular mass meant that those pushes weren't doing much for actually pushing the object UP. Now I'm looking for those scenarios and treating them as if there was only one contact point between the center of mass of the object and the stationary one.

##### Share on other sites

This topic is 3857 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Create an account

Register a new account

• ### Forum Statistics

• Total Topics
628707
• Total Posts
2984310

• 23
• 10
• 9
• 13
• 13