Так что моя проблема была простой и немного "дохой" момент. Во-первых, нереализованная проблема, которую мне пришлось исправить, была возвращением истины, независимо от того, была ли моя математика на самом деле выполнена правильно, но поскольку этот раздел не был затронут, это не было настоящей проблемой. Спасибо всем, кто это заметил.
Ошибка 1 (нет, если при возврате истина):
In collides.cpp
for (int i = 0; i < a_pnt.size(); i++)
{
for (int j = 0; j < b_pnt.size(); j++)
{
...
return true;
}
}
Исправлено:
for (int i = 0; i < a_pnt.size(); i++)
{
for (int j = 0; j < b_pnt.size(); j++)
{
...
if((frac_1>0.0)&&(frac_1<1.0)&&(frac_2>0.0)&&(frac_2<1.0))
return true;
}
}
Второй вопрос, и главный, после предложения от комментатора, его имя упоминается в вопросе выше, я дважды проверил свой геттер на наличие ограничивающих рамок. Низкий и вот, это была моя проблема. Хотя сначала я не принимал во внимание его советы, потому что думал, что полностью реализовал этот метод получения, это была моя проблема, и изучение ценных уроков всегда полезно.
Проблема вторая (неполная реализация GetBounds, в результате которой возвращается пустой вектор.):
в asteroids.cpp:
std::vector asteroid::getBounds()
{
//my issue was here, check your functions a bit more closely :P
//wasn't returning a vector with anything in it.
std::vector<point> t;
//now it's
std::vector<point> t = lyrs[0].pnts;
for (int i = 0; i < t.size(); i++)
{
double x = t[i].x+location.x;
double y = t[i].y+location.y;
t[i] = point{x, y, t[i].z};
}
return t;
}
Урок, который нужно выучить: даже если вы думаете, что у вас все работает правильно, бывают ситуации, когда вы этого не делаете, и вам следует проверять и перепроверять КАЖДУЮ функцию, которую вы вызываете, только если одна из тех функций, которые, по вашему мнению, работают, на самом деле не работает работает как надо.