Punkt-Winkel Berechnung

Developer_X

Top Contributor
Hi.

Ich habe einen Punkt A, dessen Coordinaten sind X und Y.
Ich habe auch einen Winkel Alpha.
Ich habe auch einen Radius r.

Nun möchte ich von Punkt A aus auf Punkt B rechnen, wie in anbeigeheftetem Bild.

Wie geht das?
 

Anhänge

  • Bild.jpg
    Bild.jpg
    8,1 KB · Aufrufe: 102

Landei

Top Contributor
Die "Höhe" von B ist die Gegenkathete zu alpha im rechtwinkligen Dreieck (das entsteht, wenn man von B senkrecht nach unten zeichnet). Hypothenuse ist natürlich r.

sin(alpha) = Gegenkathete / Hypothenuse
Gegenkathete = Hypothenuse * sin(alpha)
Also: B.y = A.y + r*sin(alpha)

Analog gilt für den "horizontalen Abstand" (die Ankathete):
cos(alpha) = Ankathete / Hypothenuse
Ankathete = Hypothenuse * cos(alpha)
Also: B.x = A.x - r*cos(alpha) [zumindest wenn B wie in der Zeichnung links von A sein soll]

Findest du alles hier

Nicht vergessen, dass Winkel in für Javas Winkelfunktionen in Radiant angegeben werden (und nicht in Grad).
 

Developer_X

Top Contributor
Hey danke, das hätte ich mit meinen trigonometrischen kenntnissen nicht hinbekommen.
Danke für den Link, ich werd da erst noch mal alles lesen müssen bevor ich weiter programmiere.

Developer_X
 

Developer_X

Top Contributor
Also ich will sowas wie Astroids, wers kennt, programmieren.

Ich hatte mir überlegt, erstmal, dass ich wie in der Physik 2 Variablen habe, f_UP (Kraft die den Körper (das Schiff) nach oben drückt, bzw. bei negativem Wert nach unten) und f_LEFT (Kraft die den Körper (das Schiff) nach links drückt, bzw. bei negativem Wert nach rechts).

Das mit up und down klappt schon super.
Bei left bzw. right habe ich die funktion eingebaut, dass das schiff sich dreht.
Aber die vorwärts beschleunigung soll sich auf den Körper auch auf seine rotation beziehen.

Wie könnte ich das anstellen?
Ich habe mir überlegt, in einem Thread, jedes mal von der X und Y Koordinate f_UP und f_LEFt zu addieren.

f_UP und f_LEFT werden also mit Berechnungen geändert.

Nun dachte ich mir, >>wie könnte ich das anstellen?<<.

Java:
	public void run() 
	{
		int counter = 0;
		
		while(true)
		{
			repaint();
			
			keyInteraction();
			maneuver();
			
			if(counter==5)
			{
				shotInteraction();
				counter = 0;
			}
			else
				counter++;
			
			try{Thread.sleep(10);}catch(Exception e){}
		}
	}
	
	public void maneuver()
	{
		double x = (mouseX - shipX) / (double) d.width;
        double y = (mouseY - shipY) / (double) d.height;
        shipRot = Math.toRadians((Math.PI * ((y < 0)? 1 : 2) - Math.atan(x / y))); 
        
		shipX += f_LEFT;
		shipY += f_UP;
		
		if(shipY<0)
			shipY = d.height;
		else if(shipY>d.height)
			shipY = 0;
		
		if(shipX<0)
			shipX = d.width;
		else if(shipX>d.width)
			shipX = 0;
	}
	
	public void keyInteraction()
	{
		if(left)
			f_LEFT -=0.05;
		if(right)
			f_LEFT +=0.05;
	
		if(up)
			f_UP -= 0.05;
		if(down)
			f_UP += 0.05;
	}
	// left, right, up und down sind booleans, sie werden aktiviert bei
	// Tasten betätigung, und werden deaktiviert, bei Tasten enttätigung.
	// f_LEFT und f_UP sind double.

Ich hatte mit der Lösung hier in diesem Thread gedacht, ich hätte die Lösung für mein Problem.
Einfach die x und y koordinaten vom neuen Punkt vom Alten Punkt subtrahieren, und diese dann zu f_UP bzw. f_LEFT zu addieren. Aber das hatte nicht wirklich funktioniert. Hat einer von euch eine Idee, wie man dieses Problem angehen könnte?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Winkel von einem Punkt zum anderen berechnen Spiele- und Multimedia-Programmierung 9
S Punkt auf Linie Spiele- und Multimedia-Programmierung 5
I Wo befindet sich ein Punkt? Spiele- und Multimedia-Programmierung 6
A Wann ist ein Punkt inerhalb eines Polygons? Spiele- und Multimedia-Programmierung 2
C Java3D Rotation um einen Punkt (y-achse) Spiele- und Multimedia-Programmierung 2
Developer_X Colisionserkennung Punkt -> Linie || Linie -> Linie Spiele- und Multimedia-Programmierung 5
C JAVA3D Rotation um einen bestimmten Punkt Spiele- und Multimedia-Programmierung 20
hdi 3d punkt -> 2d punkt Spiele- und Multimedia-Programmierung 10
G Wie bekomme ich einen Punkt (Graphics) Spiele- und Multimedia-Programmierung 2
G Punkt in Image auf Transparenz prüfen Spiele- und Multimedia-Programmierung 6
G gezeichnete Elemente überprüfen ob sie ein Punkt xy abdecken Spiele- und Multimedia-Programmierung 3
A Einfacher bewegter Punkt im Frame Spiele- und Multimedia-Programmierung 6
S Punkt berechnen, nach Rotation Spiele- und Multimedia-Programmierung 2
L Punkt im 3D-Raum Spiele- und Multimedia-Programmierung 2
R Wie zeichne ich einen einzelnen Punkt Spiele- und Multimedia-Programmierung 2
U2nt Pingpong: Richtung/Winkel Spiele- und Multimedia-Programmierung 3
A RotationInterpolator und Winkel Spiele- und Multimedia-Programmierung 4
F Winkel zwischen Vektoren Spiele- und Multimedia-Programmierung 5
V Winkel zwischen zwei Vektoren Spiele- und Multimedia-Programmierung 1
T Java3D/Odejava - wie Winkel herausfinden? Spiele- und Multimedia-Programmierung 3
I Aus Gerade andere Geraden mit bestimmtem Winkel berechnen Spiele- und Multimedia-Programmierung 6
Viktim FPS Berechnung Spiele- und Multimedia-Programmierung 4
P Billard, kugeln berechnung Spiele- und Multimedia-Programmierung 2
G Berechnung der Nachbarländer Spiele- und Multimedia-Programmierung 12

Ähnliche Java Themen


Oben