**1**

# Finding an angle relative to current angle

Started by Apr 26 2011 11:57 PM

,
3 replies to this topic

###
#1
Members - Reputation: **121**

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?

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?

###
#2
Members - Reputation: **121**

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;

pRotStrafe = MathHelper.ToRadians(degrees);

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;

pRotStrafe = MathHelper.ToRadians(degrees);

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.

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

{

speed = 0.35f;

// degrees = 270.0f;

degrees = MathHelper.ToDegrees(pRot);

degrees -= 90;

pRotStrafe = MathHelper.ToRadians(degrees);

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;

pRotStrafe = MathHelper.ToRadians(degrees);

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.