summaryrefslogtreecommitdiffstats
path: root/source/AVR_Studio/Soccer/sensor/position.c
blob: cc7a345de1f949bf6455f1f6a880d0f7fa767d7c (plain)
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
42
43
44
45
46
#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ück
int Position::GetX() {
	return (int)x;
}

// Gibt die Y-Koordinate zurück
int Position::GetY() {
	return (int)y;
}

// Gibt die Ausrichtung zurück
int Position::GetAusrichtung() {
	return ausrichtung;
}