This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
rc2007-soccer/source/AVR_Studio/Soccer/sensor/position.c

47 lines
1.1 KiB
C
Raw Permalink Normal View History

2007-02-15 20:15:02 +00:00
#include "position.h"
#include "../global.h"
Position::Position() {
// inititalisiere die Maussensoren
maussensor0.init(MAUSSENSOR0);
maussensor1.init(MAUSSENSOR1);
// Wir starten in der Mitte, nach vorne gerichtet
x = 0;
y = 0;
ausrichtung = 0;
}
Position::~Position() {
}
// Aktualisiert die internen Variablen x,y und ausrichtung
void Position::Aktualisieren() {
// Lese die Maussensoren ein
uint8 maus0_x = maussensor0.GetX();
uint8 maus0_y = maussensor0.GetY();
uint8 maus1_x = maussensor1.GetX();
uint8 maus1_y = maussensor1.GetY();
// Und berechne die neuen Werte
// ACHTUNG!!!!! Die Funktionen sind noch ungetestet und werden fehler enthalten
x += (maus0_x*sin(ausrichtung+45)+maus1_x*cos(ausrichtung+45))/2;
y += (maus0_y*sin(ausrichtung+45)+maus1_y*cos(ausrichtung+45))/2;
ausrichtung += ((maus0_y + maus1_y)/2)*(360/MAUS_FULL_TURN);
}
// Gibt die X-Koordinate zur<75>ck
int Position::GetX() {
return (int)x;
}
// Gibt die Y-Koordinate zur<75>ck
int Position::GetY() {
return (int)y;
}
// Gibt die Ausrichtung zur<75>ck
int Position::GetAusrichtung() {
return ausrichtung;
}