[Java2D] findind x and Y after Rotation

Hello everyone,

Determinate the rotation angle


angle = Math.atan2(gun.getY() - my, gun.getX() - mx) - Math.PI / 2;

Rotate :


g2d.rotate(gun.getA(), gun.getX() + 5, gun.getY() + 60);
g2d.drawRect(gun.getX(), gun.getY(), gun.getW(), gun.getH());

but when i trace the X and Y of the rotated rectangle, it always show the same values (unless if i moved left-right/up-down)
but during the rotation nothing changes
is there a way to find it ?
to clarify the problem :
the rectangle is a “gun” and therefore i need to know the x and y value during the rotation to be able to launch bullets

PS :
i tried to rotate the bullets (i don’t think it’s the right way) but after i tried it, the result is very annoying,
i had to write the code in the bottom of the paint method, otherwise, everything that i draw after it will rotate with it,(i tried drawing it with a different Graphics2D variable but still the same result) it should be a fix for that and am sure am going to ask about it later :stuck_out_tongue: but for now, is there a way to find the new X and Y after rotation ??

Edit :
“ps” is fixed,
look at this post

now how to know the new X and Y ::slight_smile: ?

thank you

I don’t think I fully understood your problem, but this is what I do.

float angle = … (you already have)
float velX = (float)Math.cos(angle) * speed;
float velY = (float)Math.sin(angle) * speed;

In the bullet’s update method:

posX += velX;
posY += velY;

Angles hate you, hate them back (local search).

I’m also not sure about your question, but I’m gonna make an assumption that you are looking for the tip of the gun’s x and y?

If that is the case, then you just use your basic trigonometry knowledge:

Sin means the y value of an angle on a unit circle (r=1).
Cos means the x value.

In order to find the tip of the gun you would do this:


gunTipX = math.sin(gun.angle)*gun.length + gun.x;
gunTipY = math.cos(gun.angle)*gun.length + gun.y;

Hope I could be of help ;).

If I misunderstood your question, then please clarify :).