View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# 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

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

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

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+

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.