Vektoren nehmen keine neuen Werte an

  • Themenstarter Hummerbändiger
  • Beginndatum
Status
Nicht offen für weitere Antworten.
H

Hummerbändiger

Gast
Ich habe folgendes problem:

ich habe hier ein programm, das einen kleinen simulierten roboter duch ein labyrinth schickt.
hier erstmal der code der mir kopfzerbrechen bereitet:

Code:
messpunkt=pos; // in pos steckt meine aktuelle position (x/y koordinaten); beide variablen typ Vector3f

// jetzt wird die position meiner abstandssensoren bestimmt
// also verschiebung meines punktes um SENS_IR_DIST_X in x-richtung,
// SENS_IR_DIST_Y in y-richtung
// anschließend drehung um "phi", z kann ich vernachlässigen
 
messpunkt.x += (Math.cos(phi) * SENS_IR_DIST_X) - (Math.sin(phi) * SENS_IR_DIST_Y);
messpunkt.y += (Math.sin(phi) * SENS_IR_DIST_X) + (Math.cos(phi) * SENS_IR_DIST_Y);
messpunkt.z += SENS_IR_DIST_Z;

// hier wird dann mein entsprechender zielpunkt des infrarotstrahls berechnet
// ziel_x/y sind beides double variablen, weil ich die so später besser verarbeiten kann
// werden dann in einer karte abgespeichert - hier rausgelassen
		
ziel_x = messpunkt.x + (irr * 0.001d * Math.sin(phi));
ziel_y = messpunkt.y + (irr * 0.001d * Math.cos(phi));

// bis dahin alles ok
// jetzt das selbe mit dem linken sensor (deshalb negative x-koordinate)

messpunkt=pos;
messpunkt.x += (Math.cos(phi) * (- SENS_IR_DIST_X)) - (Math.sin(phi) * SENS_IR_DIST_Y);
messpunkt.y += (Math.sin(phi) * (- SENS_IR_DIST_X)) + (Math.cos(phi) * SENS_IR_DIST_Y);
messpunkt.z += SENS_IR_DIST_Z;

// !!! HIER DAS PROBLEM !!!
// der neue messpunkt wird nicht verschoben (habe es im debugger schon mal beobachtet)
// linke seite ist der originalwert der position, ok - da geh ich noch mit
// der rechte wert ist im debugger der wert, der von meinem aktuellen x-wert abgezogen werden soll
// aber nach ausführung des befehls steht wieder der ursprüngliche x-wert drin
// also der aus "pos.x"
		
ziel_x = messpunkt.x + (irl * 0.001d * Math.sin(phi));
ziel_y = messpunkt.y + (irl * 0.001d * Math.cos(phi));

// dadurch ergeben sich für die neuen gemessenen koordinaten fehler

Wenn irgendjemand eine idee hat, warum die werte beim 2. mal nicht richtig abgespeichert werden, würde mir das echt helfen

danke
 

PyroPi

Aktives Mitglied
Kann es sein, daß SENS_IR_DIST_Y gleich 0 ist? Dann würden sich die beiden Additionen in den Zeilen 8 & 23 bzw. 9 & 24 gerade aufheben.
 
H

Hummerbändiger

Gast
ne, SENS_IR_DIST_Y=0.0554; SENS_IR_DIST_X=0.036;

dadran sollte es eigentlich nicht liegen.

mich wundert ja eigentlich, dass im debugger die rechte seite der gleichung korrekt berechnet wird. oder kann das an der "+=" zuweisung liegen? aber schließlich funktioniert das ja auch bei der ersten auswertung...

ich weiß echt nicht weiter. ansonsten müsste ich eben für jede koordinate noch ne einzelne variable deklarieren
 
H

Hummerbändiger

Gast
Ach so, hätt ich fast vergessen:
ich lese in zeile 22 ja noch mal den gesamten positionsvektor ein. deshalb müsste ich ja eigentlich die selben ausgangsbedingungen haben.
 

PyroPi

Aktives Mitglied
Hummerbändiger hat gesagt.:
Ach so, hätt ich fast vergessen:
ich lese in zeile 22 ja noch mal den gesamten positionsvektor ein. deshalb müsste ich ja eigentlich die selben ausgangsbedingungen haben.

Aha, das hatte ich flüchtigerweise überlesen. Das Problem ist, daß du dir den Ausgangszustand eben NICHT wiederherstellst. Denn indem du messpunkt = pos zuweist, zeigt messpunkt nun auf pos. Alle Änderungen an den einzelnen Variablen x, y und z wirken sich auch auf pos aus. Beobachte mal die Veränderung von pos.z. Wenn pos.z am Anfang 0 ist, müßte es nach der Zuweisung in Zeile 10 den Wert SENS_IR_DIST_Z haben, nach der Zuweisung in Zeile 25 den Wert 2*SENS_IR_DIST_Z.

Du kannst das Problem bspw. lösen, indem du dir für die Klasse von messpunkt einen Konstruktor anlegst, der ein neues Objekt auf Grundlage eines alten erstellt, quasi das Objekt clont.
Code:
   public Point3D(Point3D p)
    {
        this.x = p.x;
        this.y = p.y;
        this.z = p.z;
    }

Und statt
Code:
    messpunkt=pos;
schreibst du dann
Code:
    messpunkt=new Point3D(pos);

Ich schätze mal, daß sich der Fehler dadurch ergeben hat.
 
H

Hummerbändiger

Gast
Ach so, na das erklärt einiges. im nachhinein macht das sinn.

ich könnte quasi auch meinen messpunkt dann übernehmen mit

Code:
messpunkt = new Vector3f(pos);

wenn ich nur die referenz übergeben würde, ist es klar, dass der falsche wert rauskommt.

vielen dank!!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V sift, kmeans, distanzfunktion vektoren Allgemeine Java-Themen 3
I OOP: Vektoren und Matrizen Allgemeine Java-Themen 5
K Collections oder Vektoren sicher zu serialisieren? Allgemeine Java-Themen 5
O Vektoren in Vektor sortieren aber mit Java 1.4 (!) Allgemeine Java-Themen 4
T Vektoren einlesen Allgemeine Java-Themen 5
B Array von Vektoren by reference übergeben Allgemeine Java-Themen 5
K Inhalt von Vektoren auslesen Allgemeine Java-Themen 6
H Sortieren von Arrays und Vektoren Allgemeine Java-Themen 7
E Probleme beim Zugriff auf verschachtelte Vektoren Allgemeine Java-Themen 16
K Vektoren darstellen. Allgemeine Java-Themen 3
A was kann ich nehmen als statt IsHitBy? Allgemeine Java-Themen 3
M String auseinander nehmen Allgemeine Java-Themen 3
J Welchen Obfuscator nehmen? Allgemeine Java-Themen 11
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
F Applet fokus von textfiled nehmen Allgemeine Java-Themen 3
schlingel Plugin-Architektur - Welche nehmen? Allgemeine Java-Themen 6
reibi Aktuelles Verzeichnis in den Klassenpfad nehmen Allgemeine Java-Themen 9
J SQLException.getNextException; woher nehmen? Allgemeine Java-Themen 9
R Welche Exception bei write() nehmen Allgemeine Java-Themen 7
R Was nehmen für Flußdiagramme und Druck von großen Grafiken Allgemeine Java-Themen 4
berserkerdq2 Kann keine Labels erstellen, was ist hier syntaktisch falsch Allgemeine Java-Themen 5
berserkerdq2 Labels in IJVM sind keine lokalen Variablen oder? Allgemeine Java-Themen 2
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
Tobero Eclipse Runnable jar exportiert keine Textures? Allgemeine Java-Themen 12
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
Thallius Keine Ahnung Allgemeine Java-Themen 15
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
L JPA keine shared primary key Allgemeine Java-Themen 11
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
N Warum habe ich keine Spaltenüberschriften? Allgemeine Java-Themen 6
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Bluedaishi Input/Output Bluetooth Bondrucker MZ220 keine Verbindung Allgemeine Java-Themen 0
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
M Eclipse Keine Ausgabe mehr bei Fehlern Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
M keine Bilder in .jar-Datei (java) Allgemeine Java-Themen 23
D Chat - keine Schrift sichtbar Allgemeine Java-Themen 4
J Eclipse Elipse gibt mir keine Vorschläge mehr :( Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
S Tomcat java.util.logging - keine Logs Allgemeine Java-Themen 12
Guybrush Threepwood Warten, bis keine Taste gedrückt Allgemeine Java-Themen 11
S Keine NullPointerExceptions in nebenläufigen Threads Allgemeine Java-Themen 21
T Batch-File / keine Verbindung zur DerbyDB Allgemeine Java-Themen 3
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
X Warum kann ich keine ZIP Datein mit renameto() in was anderes benennen? Allgemeine Java-Themen 13
B warum keine nested blocks Allgemeine Java-Themen 2
GilbertGrape Jetty-Dienst startet keine Programme mit Oberfläche Allgemeine Java-Themen 2
S Keine Exception-Warning in Eclipse Allgemeine Java-Themen 3
D Warum keine Mehrfachvererbung? Allgemeine Java-Themen 5
tfa Keine Closures in Java 7 (?) Allgemeine Java-Themen 17
J Probleme wenn man keine serialVersionUID definiert? Allgemeine Java-Themen 27
G PrintWriter in .jar erstellt keine Datei Allgemeine Java-Themen 4
F Kann man keine Arrays von generischen Typen erstellen? Allgemeine Java-Themen 2
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
ARadauer Random keine Zahlen doppelt Allgemeine Java-Themen 4
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
G Jarfile gibt keine Textnachrichten aus Allgemeine Java-Themen 2
J java vnc client verbessern: KeyEvent.VK_ALT keine Wirkung? Allgemeine Java-Themen 12
J jar-Datei enthält keine Main-Class Allgemeine Java-Themen 22
N Keine Klassen startbar/mit Abhängigkeiten erstellbar Allgemeine Java-Themen 2
WMaerz Der neue JDK 6 enthält keine javac.exe, tool.jar usw. Allgemeine Java-Themen 6
P Webhosting-Paket unterstützt nur .war Dateien keine jsp Allgemeine Java-Themen 4
A Kann keine neue Klasse erstellen. Allgemeine Java-Themen 3
D TextPane nach Laden keine Styles Allgemeine Java-Themen 2
A JSP include - keine Fehlermeldung Allgemeine Java-Themen 2
N Applet übernimmt keine Änderungen Allgemeine Java-Themen 13
C Vier Stellen Keine Doppelt (Zufall) Allgemeine Java-Themen 20
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
C Java zeigt keine Fensterinhalte Allgemeine Java-Themen 3
G Leere Fenster (Keine Schrift, Reiter/ Buttons) bei Java Allgemeine Java-Themen 5
G woher installiertes JDK? (keine Adminrechte) Allgemeine Java-Themen 3
R keine sqrt methode für bigintegers? Allgemeine Java-Themen 14
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
0 Keine clone-Methode für BigDecimal und BigInteger? Allgemeine Java-Themen 3
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
Y Comm-API findet keine Ports Allgemeine Java-Themen 5
B Keine Musik bei Applikation Allgemeine Java-Themen 9
H Kann keine Zahlen von Buchstaben unterscheiden Allgemeine Java-Themen 4
V Javadoc ertellt keine korrekten links Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben