Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Rotationsalgorithmus unvollständig » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Rotationsalgorithmus unvollständig
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Tommy1234
Foren As


Dabei seit: 12.07.2015
Beiträge: 93

Rotationsalgorithmus unvollständig Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,

seit längerem beschäftige ich mich mit Rotationen und kann auch schon einige Erfolge verbuchen. Allerdings komme ich bei einem Algorithmus für die Rotaion nicht weiter. Ich arbeite in Java SE.

Das Programm macht folgendes:

Es wird per JButton ein Sprite erzeugt, welches angeklickt und damit rot umrandet wird. Wenn man nun irgendwo in das JFrame klickt dreht sich das Sprite um sich selbst bis es den Winkel zwischen Maus und Sprite erreicht hat und bewegt sich zum Mauszeiger hin.(Hoffe soweit verständlich!).

Aufbau:
Im Konstruktor hab ich den Anfangswinkel mit 0 initialisiert, so dass sich dieser erst zur Laufzeit verändert. Ausserdem hab ich eine eigene Methode, die den Winkel dann zur Laufzeit berechnet und zurückgibt als Double. Der Winkel ist im Bogenmaß. Darüber hinaus habe ich noch für die vier Quadranten Anpassungen vorgenommen, dass ein vollständiger Kreis entsteht. Also von 0 bis 2 PI.

Für die Rotation nehme ich AffineTransform mit dessen Methode rotate(), die einen Winkel im Bogenmaß erwartet.

Das ganze ist in 2D und aus der Vogelperspektive.

Nun zu meinem Problem:

Ich hab mir gedacht ich nehme eine Ganzzahl und erhöhe bzw. vermindere diese um eins und übergebe diese dann der rotate-Methode. Ganzzahl deshalb, weil ich hier auf Gleichheit prüfen kann. Das Problem ist, wie decke ich alle Fälle(damit meine ich, dass die Rotation von Quadrant zu Quadrant korrekt!!! funktioniert) ab? Mein bisheriger Code deckt fast alle Fälle ab außer, wenn ich vom 4ten in den ersten will und umgekehrt, er nimmt nämlich da immer den längeren Weg.

Hier mal die Methode:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:

public double rotate(int soll){
		
		if(soll > ist){
			
				if(i==360){
					i=0;
				}
				if(i!=soll){
					i++;
				}
				else{
					ist=soll;
				}
		}
		else if(soll < ist){
			
			
				if(i==0){
					i=360;
				}
				if(i!=soll){
					i--;
				}
				else{
					ist=soll;
				}
			
		}
		
		
		
		return Math.toRadians(i);
	}







Wäre für Denkanstöße dankbar.

Gruß Tommy
12.07.2015 11:48 Tommy1234 ist offline Beiträge von Tommy1234 suchen Nehmen Sie Tommy1234 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ungetestet, sollte aber klappen. Wenn nicht, bitte etwas mehr Code, damit ich mir nicht extra selbst eine Testfunktion schreiben muss.
code:
1:
deltaPhi = (soll-ist+360) % 360; //deltaPhi ist im Bereicht [0; 359]

if (deltaPhi < 180) {
//...
}
else {
//...
}[/code]

__________________
Syntax Highlighting fürs Board (Link)
12.07.2015 15:50 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Tommy1234
Foren As


Dabei seit: 12.07.2015
Beiträge: 93

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank. Es funktioniert. Du bist der erste nach zahlreichen Foreneinträgen, der mein Problem auf Anhieb verstanden hat.

Herzlichen Dank.

Gruß Tommy
12.07.2015 16:39 Tommy1234 ist offline Beiträge von Tommy1234 suchen Nehmen Sie Tommy1234 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Rotationsalgorithmus unvollständig