如下图所示,立方体的横截面可以是:

  • 三角形
  • 矩形
  • 五角大楼(无DREW)
  • 六边形

  • 假设我们得到一个六边形。我们可以得到交叉平面与立方体每一侧的交点,并得到六边形ABCDEF。问题是:如何对交点进行排序,以便将六边形ABCDEF划分为4个三角形ABCACDADEAEF



    请注意,点的顺序非常重要,因为如果顺序错误,我将无法绘制点。我想将它们分成三角形,因为我想在OpenGL中可视化它们。

    非常感谢@HugoRune的回答。在这里,我想与大家分享一些结果。左图是3D体积的横截面(从任意角度看)。右图是3D体积maximum intensity projection的结果。

    最佳答案

    相交是一个凸多边形,因此任何适用于凸多边形的排序也将在此处起作用。

    特别是:

  • 计算质心Z =(A + B + C + ...)/numPoints
  • 计算法线n = AB跨BC
  • 获取从质心到第一点的向量:ZA
  • signed angle ZA到ZP的所有点P以正常n排序
    (符号角==角(ZA,ZP)*符号(n点(ZA十字ZP))
  • 关于algorithm - 计算立方体的横截面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20387282/

    10-11 23:12
    查看更多