Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (538)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (600)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  rotating a 2D vector  (Read 1459 times)
0 Members and 1 Guest are viewing this topic.
Offline weston

Junior Devvie





« Posted 2004-12-01 20:03:52 »

I'm pretty new to vector math, I've just learned the basics (adding, subtracting, dot product, normalizing), and I've decided that I want entities in my game engine to store a direction vector and a single movement speed. Before this I had always stored seperate x/y velocities, x/y acceleration, etc. Every example I had seen up until recently seemed to use this pattern as well.

What I'm wondering is how I can rotate this direction vector. I have a variable that stores a rotation value in radians, and I rotate my sprite to this value, but I need to alter the entity's direction vector to match it so that I can give its direction vector to projectiles that is spawns. If you want the specifics, its a gun that I'm rotating and I want to give the gun's direction vector to its bullets when it fires. Right now I just have a value in radians, but I'm not sure how to alter the direction vector to match this.

thanks for any help or even a good link Smiley

for(int i = 1; i > 0; i++)
{
System.out.println(i+" cups of java downed");
}
Offline weston

Junior Devvie





« Reply #1 - Posted 2004-12-01 20:14:42 »

I think I may have solved it, but please let me know if this is right!

seems to me like the x value of my direction vector would be the sine of the rotation value I'm storing (in degrees though?),  and the y value would be the cosine of that same angle. I was also thinking that this would give me an already normalized vector, but I'm not sure if thats true... or if what I suggested is even correct.

for(int i = 1; i > 0; i++)
{
System.out.println(i+" cups of java downed");
}
Offline ewills

Junior Devvie




Java skeletal animation systems rock!


« Reply #2 - Posted 2004-12-01 20:31:04 »

Yup.  That's correct.  The resulting vector is normalized!

Edit:
You'll have to convert degrees to radians to call Math.sin and Math.cos.  To do this, simply multiply the angle in degrees by (float)Math.PI/180.0f.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline weston

Junior Devvie





« Reply #3 - Posted 2004-12-01 21:30:03 »

I've come across another problem already, acceleration. I'm before using vectors I would do something like:

xVol += xAccel*deltaSeconds;
yVol += yAccel*deltaSeconds;

x += xVol*deltaSeconds;
y += yVol*deltaSeconds;

but since I am now using:

x += direction.x*speed*deltaSeconds;
y += direction.y*speed*deltaSeconds;

I'm not sure how to handle acceleration. It seems like I will need another vector to represent the direction of the acceleration, and perhaps yet another variable to represent the magnitude of the acceleration. But I'm not sure if I should just use the un-normalized acceleration-direction vector instead. Then would acceleration look like this?:

direction.x += accelDirection.x*deltaSeconds;
direction.y += accelDireciton.y*deltaSeconds;

speed += accelDirection.length()*deltaSeconds;

will this work and is it the best way?

for(int i = 1; i > 0; i++)
{
System.out.println(i+" cups of java downed");
}
Offline kevglass

« JGO Spiffy Duke »


Medals: 211
Projects: 24
Exp: 18 years


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #4 - Posted 2004-12-02 05:36:24 »

The problem is you're using speed and not velocity. Your speed should also be an tuple (i.e. x and y).  Then you just add your direction multiplied by some thrust modifier to it when the user thrust in the current direction.

Kev

Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

rwatson462 (29 views)
2014-12-15 09:26:44

Mr.CodeIt (20 views)
2014-12-14 19:50:38

BurntPizza (40 views)
2014-12-09 22:41:13

BurntPizza (75 views)
2014-12-08 04:46:31

JscottyBieshaar (37 views)
2014-12-05 12:39:02

SHC (50 views)
2014-12-03 16:27:13

CopyableCougar4 (46 views)
2014-11-29 21:32:03

toopeicgaming1999 (113 views)
2014-11-26 15:22:04

toopeicgaming1999 (100 views)
2014-11-26 15:20:36

toopeicgaming1999 (30 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!