• Create Account

## Finding an angle relative to current angle

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

3 replies to this topic

### #1Rexxaw(Forgrim's mate)  Members

121
Like
0Likes
Like

Posted 26 April 2011 - 11:57 PM

Righty, so;

I have a current rotation value of an object stored as radians, i am looking for a way to find the object's right and left, in a radian value.
This will allow me to move(strafe) left and right relative to it's heading.

So current angle = #
angle right = # (function here... )

Ive tried converting to degrees and then back again, but its making it overly complex i think, and doesn't sort the problem of angle being relative.
Anyone familiar with this problem?

### #2Rexxaw(Forgrim's mate)  Members

121
Like
1Likes
Like

Posted 27 April 2011 - 12:31 AM

Heres my solution

if (Keyboard.GetState().IsKeyDown(Keys.A))
{

speed = 0.35f;
// degrees = 270.0f;
degrees = MathHelper.ToDegrees(pRot);
degrees -= 90;

pVlx = (float)Math.Cos(pRotStrafe) * speed;
pVly = (float)Math.Sin(pRotStrafe) * speed;

pPos -= new Vector2(pVlx, pVly);

}

if (Keyboard.GetState().IsKeyDown(Keys.D))
{
speed = 0.35f;
degrees = MathHelper.ToDegrees(pRot);
degrees += 90;

pVrx = (float)Math.Cos(pRotStrafe) * speed;
pVry = (float)Math.Sin(pRotStrafe) * speed;
pPos -= new Vector2(pVrx, pVry);

}

Strikes me as a lot of computation but it does work.

To alleviate all the questions i badger the boards with i can at least post solutions as i find them.

### #3scgames  Members

2082
Like
0Likes
Like

Posted 27 April 2011 - 01:50 PM

Typically you'd do this using vector math rather than angles/trig. For example, given a vector (x, y), the perpendicular vectors are (-y, x) and (y, -x) (which is basically what you're computing here, but in a less straightforward way).

### #4mozie  GDNet+

194
Like
0Likes
Like

Posted 28 April 2011 - 07:06 AM

You can cut out the conversion here, since Pi/2 (radians) = 90 (degrees).

degrees = MathHelper.ToDegrees(pRot);
degrees -= 90;


would become...

pRotStrafe = pRot - Pi/2;


Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.