Java-Gaming.org Hi !
 Featured games (90) games approved by the League of Dukes Games in Showcase (775) Games in Android Showcase (230) games submitted by our members Games in WIP (856) 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
 Removed..  (Read 14620 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.

 Games published by our own members! Check 'em out!
Roquen

JGO Kernel

Medals: 518

 « 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

« JGO Overlord »

Medals: 1356
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!
 Games published by our own members! Check 'em out!

JGO Wizard

Medals: 19
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

 hadezbladez (47 views) 2018-11-16 13:46:03 hadezbladez (50 views) 2018-11-16 13:41:33 hadezbladez (35 views) 2018-11-16 13:35:35 hadezbladez (21 views) 2018-11-16 13:32:03 EgonOlsen (1902 views) 2018-06-10 19:43:48 EgonOlsen (1939 views) 2018-06-10 19:43:44 EgonOlsen (1288 views) 2018-06-10 19:43:20 DesertCoockie (1734 views) 2018-05-13 18:23:11 nelsongames (1415 views) 2018-04-24 18:15:36 nelsongames (2047 views) 2018-04-24 18:14:32
 Deployment and Packagingby mudlee2018-08-22 18:09:50Java Gaming Resourcesby gouessej2018-08-22 08:19:41Deployment and Packagingby gouessej2018-08-22 08:04:08Deployment and Packagingby gouessej2018-08-22 08:03:45Deployment and Packagingby philfrei2018-08-20 02:33:38Deployment and Packagingby philfrei2018-08-20 02:29:55Deployment and Packagingby philfrei2018-08-19 23:56:20Deployment and Packagingby philfrei2018-08-19 23:54:46
 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