【问题标题】:How to know if a vector on the right hand side如何知道一个向量是否在右手边
【发布时间】:2016-02-05 15:07:06
【问题描述】:

让我先定义我的问题,

我正在研究室内导航问题。所以我构建了一个图表来模拟可能的路径。我可以使用 Dijkstra 轻松计算最短路径并将其绘制在地图上。到目前为止,一切顺利。

但这还不够,

我需要指导用户导航他。

例如:

"Turn Right"
"Turn Left"
"Go on from the left"

为了给出这些指令,我需要知道哪条路径在左边,哪条路径在右边。

这是我必须解决的问题:

 1. A undirected weighted graph  
 2. The shortest path which contains vertices and edges   
 3. X and Y Coordinates of each vertices

顺便说一句,我将在 .Net 中使用信标技术来实现这一点。

你知道如何分离左右边缘,以便我可以向用户发送方向信息吗?

谢谢。

【问题讨论】:

    标签: asp.net math vector graph-theory indoor-positioning-system


    【解决方案1】:

    我能想到的最简单的方法是取代表玩家面对/行进方向的向量与代表你希望玩家进入的方向的向量的叉积。玩家必须向左还是向右取决于关于结果的Y坐标是正还是负,但这取决于坐标系的手性。我只会挑一个试试看。你有 50% 的正确率,如果你错了,很容易逆转。

    编辑:

    这里我们看到当a 位于b 的右侧时,a×b 指向上方。但是,我们也看到 -a×b 指向 down。因此,如果 a 指向相反的方向——向左——那么叉积将指向下方。

    【讨论】:

    • 我无法得到叉积与左右之间的关系。能不能详细点?
    • 添加了一些进一步的解释。
    【解决方案2】:

    点积方法不适用于二维。对于这种情况,您想使用矩阵 [A B] 的行列式的符号,其中 A 和 B 是您的列向量。伪代码是

    c=sign(det([A B]))

    这里,如果c>0是意味着B在左边。这将根据矩阵中 A 和 B 的顺序进行切换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2019-01-19
      • 1970-01-01
      相关资源
      最近更新 更多