Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (480)
Games in Android Showcase (110)
games submitted by our members
Games in WIP (547)
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 10697 times)
0 Members and 1 Guest are viewing this topic.
Offline NewOnJava

Junior Member




1970 born Java game hobbyer.


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

Removed..
Offline 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 ?
Offline Karmington

Senior Member


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!
Legends of Yore - The Casual Retro Roguelike
Online 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.
Offline 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

Offline 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
Offline NewOnJava

Junior Member




1970 born Java game hobbyer.


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

Removed..
Offline 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.

 Roll Eyes

See my work:
OTC Software
Offline NewOnJava

Junior Member




1970 born Java game hobbyer.


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

Removed..
Online Riven
« League of Dukes »

JGO Overlord


Medals: 781
Projects: 4
Exp: 16 years


Hand over your head.


« 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!
Legends of Yore - The Casual Retro Roguelike
Offline Markus_Persson

JGO Wizard


Medals: 14
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!
Offline 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
Offline 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

adding 270 gives:

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.

atombrot (24 views)
2014-08-19 09:29:53

Tekkerue (23 views)
2014-08-16 06:45:27

Tekkerue (23 views)
2014-08-16 06:22:17

Tekkerue (13 views)
2014-08-16 06:20:21

Tekkerue (20 views)
2014-08-16 06:12:11

Rayexar (58 views)
2014-08-11 02:49:23

BurntPizza (38 views)
2014-08-09 21:09:32

BurntPizza (30 views)
2014-08-08 02:01:56

Norakomi (37 views)
2014-08-06 19:49:38

BurntPizza (67 views)
2014-08-03 02:57:17
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

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
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!