Всем привет, при компиляции с флагом -O0 программа работает идеально, стоит добавить -O1 функция проверки пересечения 2х прямых перестает работать, можно ли отключить оптимизации для этой функции? Код функции:
#define EPS 0.00001f
bool Intersect (glm::vec2 A, glm::vec2 B) {
glm::vec2 p1 = v1->Pos;
glm::vec2 p2 = v2->Pos;
//
float rTop = (A.y-p1.y)*(p2.x-p1.x)-(A.x-p1.x)*(p2.y-p1.y);
float sTop = (A.y-p1.y)*(B.x-A.x)-(A.x-p1.x)*(B.y-A.y);
float rBot = (B.x-A.x)*(p2.y-p1.y)-(B.y-A.y)*(p2.x-p1.x);
float sBot = (B.x-A.x)*(p2.y-p1.y)-(B.y-A.y)*(p2.x-p1.x);
//
if (rBot == 0 || sBot == 0)
return false;
//
float r = rTop/rBot;
float s = sTop/sBot;
if (r > EPS && r < 1.0f-EPS && s > EPS && s < 1.0f-EPS)
return true;
return false;
}
есть еще другая функция, через скалярное произведение векторов, но для моей задачи она иногда работает не точно, а эта функция всегда хорошо определяла, есть ли пересечение, или нету.