【问题标题】:How do I determine if a polyhedron is convex?如何确定多面体是否凸?
【发布时间】:2015-08-03 12:20:17
【问题描述】:

我正在寻找一种确定多面体是否凸面的有效算法。

我首先检查欧拉特性是否为 2。我还检查了每个面是否都是凸面。但这仍然没有抓住很多案例。

【问题讨论】:

    标签: c# convex polyhedra


    【解决方案1】:

    看看这个:http://liam.flookes.com/cs/geo/

    基本上:

    • 在多面体中选择一个点
    • 从该点向每个面发送一条射线
    • 确保光线只与所选面相交

    【讨论】:

    • 太好了,谢谢。顶点的平均值是否总是在凸多面体内部?
    • 这个点不能随便选,会误报吧?
    • @Charles:是的,给定一个凸体。 @Kryptos 可以随机选择,但您必须检查点 P 和面 A 之间的弦是否与面的所有平面相交。弦 P-A 可能与面 B 的平面相交在面 B 之外
    • @Kryptos 是的,我认为您是正确的,随机选择可能会给您带来误报。
    • @DasKrümelmonster 这没有意义:在任何给定的多面体中,您总是会与多个平面相交。
    【解决方案2】:

    我有另一个想法:为每个面检查所有其他顶点是否位于该面的​​同一侧。

    您可以通过计算每个面的法线向量(通过叉积)然后计算每个向量从一个顶点(面的)到所有其他顶点的点积来检查这一点。标志必须相同。

    算法应该都可以工作,但计算时间可能不同。

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      相关资源
      最近更新 更多