我正在阅读这本书"算法导论"实现线段交集,我对我得到的算法结果感到困惑。我必须遗漏算法中的一些内容,我需要一些帮助才能找到它。请查看以下代码段:
3
正如您所看到的那样,使用上面定义的坐标表示两条线,您还可以想象contourLine由contourLineStart和contourLineEnd公式化,而hilbertLine可以由hilbertLineStart和hilbertLineEnd公式化。这两条线无法相交。不幸的是,算法告诉我有一个交叉点让我很困惑。以下是其余的代码:
glm::i16vec2 contourLineStart(1057,1762);
glm::i16vec2 contourLineEnd(1057,0);
glm::i16vec2 hilbertLineStart(-1762,-2466);
glm::i16vec2 hilbertLineEnd(-1734,-2466);
这个过程中有什么我遗漏的吗?
由于
答案 0 :(得分:1)
下面:
if((d1 > 0 && d2 < 0) || (d1 < 0 && d2 > 0) &&
(d3 > 0 && d4 < 0) || (d3 < 0 && d4 > 0))
添加一些括号以避免(a || b && c || d)
:
if(((d1 > 0 && d2 < 0) || (d1 < 0 && d2 > 0)) &&
((d3 > 0 && d4 < 0) || (d3 < 0 && d4 > 0)))