【问题标题】:Determining the edge normals in the SAT Separating Axis Theorem确定 SAT 分离轴定理中的边缘法线
【发布时间】:2011-05-05 23:02:23
【问题描述】:

SAT 算法要​​求您找到每个形状的每个边缘的法线(本质上是一个垂直于边缘向量的向量)以用作分离轴。这可以很简单地完成...

(x,y) => (-y,x)

(x,y) => (y,-x)

SAT算法中应该使用哪个?这本质上是一个应该使用左手法线还是右手法线的问题。使用哪个会有所不同吗?应该只使用左手法线还是右手法线?这应该随着不同的情况而改变吗?

http://www.codezealot.org/archives/55#sat-axes

【问题讨论】:

    标签: algorithm vector normalization collision-detection


    【解决方案1】:

    只要对每个面使用相同的约定就没有关系,因为法线用于计算投影并比较它们:

      Projection p1 = shape1.project(axis);
      Projection p2 = shape2.project(axis);
      // do the projections overlap?
      if (!p1.overlap(p2)) {
    

    (!p1.overlap(p2)) 的结果与两个公式相同。

    HTH

    【讨论】:

      【解决方案2】:

      法线应始终从边缘指向。只有两种可能的解决方案,你想通了。一个是对的,一个是错的。

      哪个是正确的取决于两件事:

      • 您的边缘是顺时针还是逆时针。
      • 您的协调系统。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多