Hi !
Featured games (91)
games approved by the League of Dukes
Games in Showcase (757)
Games in Android Showcase (229)
games submitted by our members
Games in WIP (844)
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 2908 times)
0 Members and 1 Guest are viewing this topic.
Offline weston
« 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
« 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!

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
« 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: 319
Projects: 25
Exp: 22 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.


Pages: [1]
  ignore  |  Print  

EgonOlsen (78 views)
2018-06-10 19:43:48

EgonOlsen (58 views)
2018-06-10 19:43:44

EgonOlsen (78 views)
2018-06-10 19:43:20

DesertCoockie (260 views)
2018-05-13 18:23:11

nelsongames (158 views)
2018-04-24 18:15:36

nelsongames (157 views)
2018-04-24 18:14:32

ivj94 (898 views)
2018-03-24 14:47:39

ivj94 (162 views)
2018-03-24 14:46:31

ivj94 (811 views)
2018-03-24 14:43:53

Solater (175 views)
2018-03-17 05:04:08
Java Gaming Resources
by philfrei
2017-12-05 19:38:37

Java Gaming Resources
by philfrei
2017-12-05 19:37:39

Java Gaming Resources
by philfrei
2017-12-05 19:36:10

Java Gaming Resources
by philfrei
2017-12-05 19:33:10

List of Learning Resources
by elect
2017-03-13 14:05:44

List of Learning Resources
by elect
2017-03-13 14:04:45

SF/X Libraries
by philfrei
2017-03-02 08:45:19

SF/X Libraries
by philfrei
2017-03-02 08:44:05 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‑
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!