void normalise(int* res) { // Rebase day and month numbers on 0 --res[1]; --res[2]; //cerr << "TOZERO " << tostringall(res) << endl; // Normalise seconds normalN(res[5], res[4], 60); //cerr << "ADJSEC " << tostringall(res) << endl; // Normalise minutes normalN(res[4], res[3], 60); //cerr << "ADJMIN " << tostringall(res) << endl; // Normalise hours normalN(res[3], res[2], 24); //cerr << "ADJHOUR " << tostringall(res) << endl; // Normalise days while (res[2] < 0) { --res[1]; normalN(res[1], res[0], 12); res[2] += daysinmonth(res[0], res[1]+1); } //cerr << "ADJDAY1 " << tostringall(res) << endl; while (true) { normalN(res[1], res[0], 12); int dim = daysinmonth(res[0], res[1]+1); if (res[2] < dim) break; res[2] -= dim; ++res[1]; } //cerr << "ADJDAY2 " << tostringall(res) << endl; // Normalise months normalN(res[1], res[0], 12); //cerr << "ADJMONYEAR " << tostringall(res) << endl; ++res[1]; ++res[2]; //cerr << "FROMZERO " << tostringall(res) << endl; }
Obstacle::Obstacle(const Vector2& point1, const Vector2& point2) : normal_(normalN(point1, point2)), point1_(point1), point2_(point2) { }