线段交叉算法

时间:2016-04-16 00:48:47

标签: c++ algorithm geometry glm-math

我正在阅读这本书"算法导论"实现线段交集,我对我得到的算法结果感到困惑。我必须遗漏算法中的一些内容,我需要一些帮助才能找到它。请查看以下代码段:

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);

这个过程中有什么我遗漏的吗?

由于

1 个答案:

答案 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)))
相关问题