2017-04-14 88 views
1

我在看平面模型的“交叉?”方法来确定两条线是否相交。相交线的平面模型

这个模型似乎在大部分工作;然而,我认为我发现了一个问题。我没有数学技能来解决这个问题。基本上,考虑连接的节点A和B以及连接的C和D。

当交点位于其中一个端点时,AB垂直于CD时,会出现此问题。

例如,

Node xcor ycor 
A 0  0 
B 0  10 
C -10 0 
D 5  0 

如何扩展模型来描述这个边界条件有什么想法?我不是那种数学上有信心来描述这种情况何时发生的......我想要一个相交线例子的替代方案,它计算线的方程并解决x的问题,并检查x是否在终点之内其中一条线。

+1

考虑到您正在计算浮点数,无论您得到“是”还是“否”答案,舍入误差都有可能使其成为硬币翻转。在出现舍入误差时,甚至没有正确的答案。在你的例子中,碰巧只是因为一切都是整数。 –

回答

2

马特,平面不无论是在你的榜样的坐标组进行汇报真正的交叉对我来说:

Case 1

Case 2

在这两种情况下,模型被认为是“解决”;没有报道交叉路口。对我来说,得到的模型可以解决,我需要真正有联系过,但它似乎并不重要,如果交叉点是直接在中心:

Case 3 Case 4

你得到类似的行为与我在这里的设置相同?我不确定我是否错过了一些东西。下面的初始展示位置的修改代码需要与附加图片中的选择器一样。

to setup-level 
    reset-ticks ;; use tick counter as a move counter 
    clear-turtles ;; when the turtles die, the links connecting them die too 
    ;; create nodes and position them randomly 
    (foreach xcors ycors [ "A" "B" "C" "D" ] [ [ x y n ] -> 
    create-turtles 1 [ 
     setxy x y 
     set size 2 
     set color 88 
     set node n 
     set label node 
     set label-color black 
    ] 
    ] 
) 

    (foreach [ "A" "C" ] [ "B" "D" ] [ [ sp ep ] -> 
    ask turtles with [ node = sp ] [ 
     ask turtles with [ node = ep ] [ 
     create-link-with myself ] 
    ] 
    ] 
) 
    display 
end 
+1

你说得对。我刚回到原来的例子中,我点击错误的链接来检查十字。哎呀....谢谢。我更新了我的问题,使其更加合理。 – mattsap