Java-Gaming.org Hi !
 Featured games (83) games approved by the League of Dukes Games in Showcase (583) Games in Android Showcase (163) games submitted by our members Games in WIP (633) 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 1639 times) 0 Members and 1 Guest are viewing this topic.
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

for(int i = 1; i > 0; i++)
System.out.println(i+" cups of java downed");
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");
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!
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");
kevglass

« JGO Spiffy Duke »

Medals: 270
Projects: 25
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.

 Ralphanese (22 views) 2015-05-29 13:07:55 Gibbo3771 (18 views) 2015-05-29 06:54:17 Ralphanese (23 views) 2015-05-28 16:52:52 theagentd (31 views) 2015-05-27 22:21:17 theagentd (38 views) 2015-05-27 22:21:08 CopyableCougar4 (27 views) 2015-05-27 19:24:50 MrMapcom (24 views) 2015-05-23 20:26:16 MrMapcom (33 views) 2015-05-23 20:23:34 Waterwolf (39 views) 2015-05-20 15:01:45 chrislo27 (46 views) 2015-05-20 03:42:21
 Riven 27x Rayvolution 25x theagentd 23x BurntPizza 21x Spasi 17x KevinWorkman 17x orangepascal 16x Drenius 15x ra4king 13x princec 12x opiop65 12x DavidBVal 12x Husk 11x EgonOlsen 10x kevglass 9x Zeldar 9x
 Intersection Methodsby Roquen2015-05-29 08:19:33List of Learning Resources2015-05-05 10:20:32How to: JGO Wikiby Mac702015-02-17 20:56:162D Dynamic Lighting2015-01-01 20:25:42How do I start Java Game Development?by gouessej2014-12-27 19:41:21Resources for WIP gamesby kpars2014-12-18 10:26:14Understanding relations between setOrigin, setScale and setPosition in libGdx2014-10-09 22:35:00Definite guide to supporting multiple device resolutions on Android (2014)2014-10-02 22:36:02
 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