【问题标题】:2D orientation test barycentric coordinates二维方向测试重心坐标
【发布时间】:2017-05-16 17:02:44
【问题描述】:

如果我在整数重心坐标中有一个有序的三元组点, 我如何测试它们的方向? (我想知道这些点是共线的,是左转还是右转)

“算法”必须非常健壮,所以我不想将坐标转换为笛卡尔坐标。

对于笛卡尔来说,有一种非常好的方法可以仅使用乘法和加法来确定这一点: https://www.cs.cmu.edu/~quake/robust.html

这里有类似的方法可以判断三点是否共线, 但我不知道我是否可以将它用于此应用程序: http://web.evanchen.cc/handouts/bary/bary-short.pdf

【问题讨论】:

    标签: geometry computational-geometry triangular robust


    【解决方案1】:

    正如上一篇论文所说,对于 CCW 底三角形,PQR 的 ABC 符号区域对于 CCW 顺序为正(第 1 页的脚注),因此三元组 P、Q、R 如果行列式则左转

     x1  y1  z1
     x2  y2  z2
     x3  y3  z3
    

    具有正值(定理 10),点对于零行列式是共线的

    【讨论】:

    • 不,本次测试不需要。
    • 如果所有 z 值都为零怎么办?您可以像这样表达所有坐标,行列式将为 0,即使它们不共线。这个问题更像是是否还有机会阻止此测试失败。
    • 边缘 AB 上的点的 Z 值为零(更彻底 - 在包含此边缘的线上)。只有当所有三个点都位于基础三角形的同一条边上时,所有 z 值才可能为零 - 因此它们是共线的。没有失败。
    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    相关资源
    最近更新 更多