34 int getIndexByAngle(
int angle,
const type_angle2id& angle2id,
int& closestMatchingAngle) {
35 int wangle = (360 + angle) % 360;
37 if (angle2id.size() == 0) {
40 if (angle2id.size() == 1) {
41 closestMatchingAngle = angle2id.begin()->first;
42 return angle2id.begin()->second;
45 type_angle2id::const_iterator u(angle2id.upper_bound(wangle));
46 type_angle2id::const_iterator tmp;
49 if (u == angle2id.end()) {
50 int ud = wangle - (--u)->first;
51 int ld = 360 - wangle + angle2id.begin()->first;
54 closestMatchingAngle = angle2id.begin()->first;
55 return angle2id.begin()->second;
58 closestMatchingAngle = u->first;
63 if (u == angle2id.begin()) {
66 int ld = u->first - wangle;
67 int ud = 360 - tmp->first + wangle;
70 closestMatchingAngle = angle2id.begin()->first;
71 return angle2id.begin()->second;
74 closestMatchingAngle = tmp->first;
79 int ud = u->first - wangle;
83 int ld = wangle - u->first;
88 closestMatchingAngle = ucm;
91 closestMatchingAngle = lcm;