Java-Gaming.org Hi !
 Featured games (83) games approved by the League of Dukes Games in Showcase (522) Games in Android Showcase (127) games submitted by our members Games in WIP (591) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: [1]
 ignore  |  Print
 Removed..  (Read 10840 times) 0 Members and 1 Guest are viewing this topic.
NewOnJava

Junior Devvie

1970 born Java game hobbyer.

 « Posted 2010-03-30 13:50:32 »

Removed..
Bonbon-Chan

JGO Coder

Medals: 12

 « Reply #1 - Posted 2010-03-30 14:48:11 »

"The angle between two points" doesn't mean anything.
For the angle between two vectors (dx1,dy1) and (dx2,dy2), just use :
Math.toDegrees(Math.atan2(dy1,dx1)-Math.atan2(dy2,dx2))

No ?
Karmington

Senior Devvie

Medals: 1
Projects: 1

Co-op Freak

 « Reply #2 - Posted 2010-03-30 14:58:40 »

this is 'calculate angle of one line' in effect.

Roquen
 « Reply #3 - Posted 2010-03-30 15:53:44 »

I think this is what you want:

 1  2  3  4  5  6  7  8  9  10  11  12  13  14 `  public static final float calcAngle(Point p0, Point p1)  {    float x0 = (float)p0.getX();    float y0 = (float)p0.getY();    float x1 = (float)p1.getX();    float y1 = (float)p1.getY();        // op = m sin(theta)    // ip = m cos(theta), where m = |P0| * |P1|    float op = x1*y0-x0*y1;    float ip = x0*x1+y0*y1;       return (float)Math.toDegrees(Math.atan2(op,ip));  }`

But I'm not sure.  Your code returns 45 for: (0,1) & (1,0)  and something near 90 for (0,1) & (10000,0).  So I might be not understanding the question.
dishmoth
 « Reply #4 - Posted 2010-03-30 16:27:16 »

If you're after the angle of the line that passes through points p1 and p2, then
 1 `Math.toDegrees( Math.atan2( p2.getY()-p1.getY(), p2.getX()-p1.getX() ) )`

should do it.

The result will be in the range -180 to +180 degrees, measured anti-clockwise from East (see the comments here on angles in polar coordinates).

Simon

Eli Delventhal

JGO Kernel

Medals: 42
Projects: 11
Exp: 10 years

Game Engineer

 « Reply #5 - Posted 2010-03-30 16:45:15 »

Yup, that's exactly what atan2 is for. You don't have to bother with checking quadrants like you've been doing.

See my work:
OTC Software
NewOnJava

Junior Devvie

1970 born Java game hobbyer.

 « Reply #6 - Posted 2010-03-30 21:07:46 »

Removed..
Eli Delventhal

JGO Kernel

Medals: 42
Projects: 11
Exp: 10 years

Game Engineer

 « Reply #7 - Posted 2010-03-30 22:33:25 »

Angle!

Ok, i get this example working on my plane game, i receive East -180 to East +180 degrees, still,
im after North +0 to North +360 degrees at on my game, is there any matematical solution with Java for North 0 to North 360 angles.

or, do i do tricks, like a i did on my first post ??

-----

Thanks..

The result above makes East = 0.
If you want North to be 0, East effectively becomes -90.
That means, add 90 to the value returned.

The result above gives you a value from -180 to 180 (where 0 is east).
If you want to make it 0 to 360, effectively everything is 180 more.
That means, add 180 to the value returned.

We want to do both.

Let's convert it into an equation.

 1  2  3  4  5  6  7  8 `public double convertToNorth(double angle){    return angle + 90;}public double convertTo360(double angle){    return angle + 180;}`

Doing both means you've got to convert it to 360 and then make sure 0 is considered north. That means:
 1  2  3  4  5  6  7  8  9  10  11  12  13  14 `public double doBoth(double angle){    //At this point, -180 to 180 and East is 0.    angle = convertTo360(angle);    //At this point, 0 to 360 and West is 0.        angle = convertToNorth(angle);    //Now, 0 to 360 and North is 0.    return angle;}`

Make sense yet? What's the final result? That's right. Add 270.

See my work:
OTC Software
NewOnJava

Junior Devvie

1970 born Java game hobbyer.

 « Reply #8 - Posted 2010-03-31 07:28:07 »

Removed..
Riven
« League of Dukes »

« JGO Overlord »

Medals: 836
Projects: 4
Exp: 16 years

 « Reply #9 - Posted 2010-03-31 13:06:13 »

 1  2  3  4  5 `public float calcAngle (Point p1, Point p2 ){    float f1 = (float)Math.toDegrees( Math.atan2( p1.getY()-p2.getY(), p1.getX()-p2.getX() ) );    return (f1+270)%360;}`

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings

JGO Wizard

Medals: 16
Projects: 19

Mojang Specifications

 « Reply #10 - Posted 2010-03-31 13:46:14 »

Do you need to know the angle?

I often find that it's both faster and easier to work with vectors and dot products.

Play Minecraft!
Eli Delventhal

JGO Kernel

Medals: 42
Projects: 11
Exp: 10 years

Game Engineer

 « Reply #11 - Posted 2010-03-31 16:31:35 »

Do you need to know the angle?

I often find that it's both faster and easier to work with vectors and dot products.
One time I needed the angle specifically for where I was applying a rotation to Sprite (a goal compass). Otherwise I've always used vectors.

See my work:
OTC Software
imorio

Junior Newbie

 « Reply #12 - Posted 2010-09-05 11:09:09 »

Make sense yet? What's the final result? That's right. Add 270.

I know I'm replying to an old post but this answer is just wrong I think.

The original results would give if:
north=90
west=180 or -180
south= -90
east= 0

north=360
west=450 or 90
south=180
east=270

the only result I can think of that would be usefull is:

north=0 or 360
east or west=270
south=180
east or west=90

edit: This gives the right answer if the original answer was "polar":
int nonPolar= 90-((polar+180)%360)
if(nonPolar<0)
{
nonPolar=nonPolar+360;
}
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.
 trollwarrior1 (34 views) 2014-11-22 12:13:56 xFryIx (73 views) 2014-11-13 12:34:49 digdugdiggy (52 views) 2014-11-12 21:11:50 digdugdiggy (46 views) 2014-11-12 21:10:15 digdugdiggy (40 views) 2014-11-12 21:09:33 kovacsa (66 views) 2014-11-07 19:57:14 TehJavaDev (70 views) 2014-11-03 22:04:50 BurntPizza (68 views) 2014-11-03 18:54:52 moogie (83 views) 2014-11-03 06:22:04 CopyableCougar4 (82 views) 2014-11-01 23:36:41
 basil_ 29x theagentd 28x HeroesGraveDev 25x BurntPizza 20x Spasi 19x Riven 19x KevinWorkman 15x princec 14x SHC 12x gouessej 11x Gibbo3771 11x kpars 10x LiquidNitrogen 10x CopyableCougar4 10x kevglass 9x Longarmx 9x
 Understanding 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:02List of Learning Resources2014-08-16 10:40:00List of Learning Resources2014-08-05 19:33:27Resources for WIP games2014-08-01 16:20:17Resources for WIP games2014-08-01 16:19:50List of Learning Resources2014-07-31 16:29:50List of Learning Resources2014-07-31 16:26:06
 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