【问题标题】:Planarity Model for intersecting lines相交线的平面模型
【发布时间】:2017-04-14 02:42:25
【问题描述】:

我正在查看平面模型的“交叉”?模型库中的方法,以确定两条线是否相交。

这个模型似乎大部分都在工作;但是,我认为我发现了一个问题。我没有数学技能来解决这个问题。

本质上,考虑一个连接的节点A和B,以及连接的C和D。

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

例如,

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

关于如何扩展模型来描述这个边界条件有什么想法吗?我对描述这种情况何时发生在数学上没有信心......我想要一个替代相交线示例的方法,它计算线的方程并求解 x 并检查 x 是否在端点内其中一条线。

【问题讨论】:

  • 鉴于您使用浮点数进行计算,无论您得到“是”还是“否”的答案,舍入误差都可能使其成为硬币翻转。在存在舍入误差的情况下,甚至没有正确答案。在你的例子中恰好有,但仅仅是因为一切都是整数。

标签: math netlogo line-intersection


【解决方案1】:

马特,在你的例子中,平面性并没有与我的任何一个坐标集报告真正的交叉:

在这两种情况下,模型都被视为“已解决”;没有交叉路口报告。为了让模型无法解决,我实际上需要让链接交叉,但交叉点是否直接在中心似乎并不重要:

在与我在这里相同的设置下,您会得到类似的行为吗?我不确定我是否遗漏了什么。以下初始展示位置的修改代码,需要选择器,如附图所示。

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

【讨论】:

  • 你是对的。我刚刚回到原来的例子,我点击了错误的链接来检查十字架。哎呀……谢谢。我更新了我的问题,使其更加合理......
猜你喜欢
  • 2011-08-05
  • 2012-02-14
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 2011-11-02
相关资源
最近更新 更多