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:
Wenn irgendjemand eine idee hat, warum die werte beim 2. mal nicht richtig abgespeichert werden, würde mir das echt helfen
danke
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