【问题标题】:How can I check if a circle is intersecting a triangle in a 2 dimensional space?如何检查一个圆是否与二维空间中的三角形相交?
【发布时间】:2017-12-20 13:17:39
【问题描述】:

这是我现在正在工作的程序所需要的。我必须使用的唯一信息是三角形顶点的坐标、圆心的坐标和圆的直径。我如何确定一个圆是否在二维空间中与三角形接触/相交?我正在使用处理。

【问题讨论】:

  • 你能展示自己的尝试吗?
  • @MBo 我不知道该怎么做。我仍处于头脑风暴阶段,还没有对任何想法进行测试。

标签: geometry processing


【解决方案1】:

Stack Overflow 并不是针对一般的“我该怎么做”类型的问题而设计的。这是针对特定的“我尝试了 X,预期 Y,但得到了 Z”类型的问题。但我会尽量提供一般意义上的帮助:

您可以做的最好的事情是谷歌的东西,比如circle triangle intersectioncircle triangle collision detection。您会发现大量结果,包括:

关键是,你不应该害怕做一些研究。尝试编写一个小示例程序(又名MCVE),如果遇到困难,请提出更具体的问题。祝你好运。

【讨论】:

    【解决方案2】:

    步骤:

    1. 检查从圆心 (CC) 到三角形每个顶点的平方距离

    如果它们太大:

    1. 检查CC是否在三角形内(使用叉积符号)

    如果没有:

    1. 使用标量积计算 CC 在三角形边缘(线段)上的投影。如果投影在边缘内,则计算 CC 到边缘的距离。

    【讨论】:

    • 如果我检查它是否越过任何边缘,我想我可以做到。它会更简单。我只需要检查 X 是否越过某个位,而 Y 是否在特定范围内。
    • 您也可以简单地改写一下吗?
    • 边缘交叉是这里最耗时的计算,所以首先按照我给出的顺序检查更简单的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多